MYSQL索引

索引

索引概述

索引是帮助MySQL高效获取数据的数据结构。

索引的本质:索引是数据结构。可以简单的理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。

索引优点

1、提高数据检索的效率,降低数据库的IO成本。

2、通过创建唯一的索引,可以保证数据库表中每一行数据的唯一性。

3、在实现数据的参考完整性方面,可以加速表和表之间的连接。对于有依赖性子表和父表联合查询时,可以提高查询速度。

4、在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序的时间,降低了CPU的消耗。

索引的缺点

  1. 创建索引和维护索引要耗费时间,并随着数据量的增加,耗时也会增加。
  2. 索引需要占磁盘空间,每一个索引还要占一定的物理空间,存储在磁盘上,如果有大量的索引,索引文件就可能比数据文件更快达到最大文件尺寸。
  3. 虽然索引大大提高了查询速度,同时却会降低更新表的速度。当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

B+树结构特点

1、非叶子节点仅具有索引作用,也就是说,非叶子节点只能存储Key,不能存储value。

2、树的所有叶节点构成一个有序链表,可以按照key排序的次序依次遍历全部数据。

一个B+树能存储多少数据

MySQL中InnoDB页的大小默认是16KB。

计算机在存储数据的时候,最小存储单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)最小单元是块,一个块的大小是 4KB。InnoDB 引擎存储数据的时候,是以页为单位的,每个数据页的大小默认是16KB,即四个块。

在B+树中,一个结点就是一页。非叶子结点由主键值和一个指向下一层的地址的指针组成的组合组成。叶子结点中由一组键值对和一个指向该层下一页的指针组成,键值对存储的主键值和数据。

由存储结构,可以大概计算出一个B+树能存储的数据数量。

指针在InnoDB中为6字节,假设主键的类型是BIGINT占8字节,总共占14字节。

计算出一个非叶子结点可以存储16 * 1024 / 14 = 1170个索引指针。

假设一条数据的大小是1KB,么一个叶子结点可以存储16条数据。

得出两层B+树可以存储1170 x 16 = 18720 条数据。

三层B+树可以存储1170 x 1170 x 16 = 21902400条数据。

相关推荐

  1. MySQL索引

    2024-01-09 22:28:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-09 22:28:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-09 22:28:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-09 22:28:04       82 阅读
  4. Python语言-面向对象

    2024-01-09 22:28:04       91 阅读

热门阅读

  1. 使用 LLVM clang C/C++ 编译器编译 OpenSSL 3.X库

    2024-01-09 22:28:04       50 阅读
  2. 变量和函数提升(js的问题)

    2024-01-09 22:28:04       68 阅读
  3. 运行时类型信息 typeid、type_info...(C++)

    2024-01-09 22:28:04       57 阅读
  4. Go语言实现数据结构栈和队列

    2024-01-09 22:28:04       41 阅读
  5. linux 网络驱动之net_device 结构介绍

    2024-01-09 22:28:04       48 阅读
  6. Python基础(二):数值类型及其运算

    2024-01-09 22:28:04       61 阅读
  7. 关于Tomcat源码学习 这里是一些建议

    2024-01-09 22:28:04       52 阅读
  8. Python进程间通信

    2024-01-09 22:28:04       67 阅读
  9. Hyperledger Fabric Orderer 配置解析

    2024-01-09 22:28:04       56 阅读
  10. Linux部署前后端项目

    2024-01-09 22:28:04       57 阅读