MySQL索引是如何支撑千万级表的快速查找

MySQL索引是如何支撑千万级表的快速查找


2024年4月5日发(作者:)

在 MySQL 官方提到,改善操作性能的最佳方法 SELECT 在查询中测试的

一个或多个列上创建索引。索引条目的作用类似于指向表行的指针,从而使查

询可以快速确定哪些行与WHERE子句中的条件匹配,并检索这些行的其他列

值。所有MySQL数据类型都可以建立索引。

尽管可能会为查询中使用的每个可能的列创建索引,但不必要的索引会浪

费空间和时间,使MySQL难以确定要使用的索引。索引还会增加插入,更新

和删除的成本,因为必须更新每个索引。您必须找到适当的平衡,才能使用最

佳索引集来实现快速查询。

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数

据的数据结构。索引的本质:索引是数据结构。

另外,阿里巴巴《Java 开发手册》提出单表行数超过 500 万行或者单表容量

超过 2GB,才推荐进行分库分表。对此,有阿里的黄金铁律支撑,所以,很多

人设计大数据存储时,多会以此为标准,进行分表操作。

以及,阿里巴巴《Java 开发手册》补充到:如果预计三年后的数据量根本达不

到这个级别,请不要在创建表时就分库分表。

为了更深入理解索引的本质,这里我们先了解一下磁盘相关知识。

外存储器-磁盘

计算机一般有两种存储的方式:内存储器(main memory)和外存储器(external

memory)

内存:读写速度非常快,但是容量很小,而且造价非常贵,在不通电的情

况下会数据会丢失,不能长期存储数据;

外存:磁盘是相对常见的外存储设备,它是以存取时间变化不大为特征

的。可以直接存取任何字符组,且容量大、速度较其它外存设备更快。

磁盘的构造

磁盘是一个扁平的圆盘(与电唱机的唱片类似)。盘面上有许多称为磁道的圆

圈,数据就记录在这些磁道上。磁盘可以是单片的,也可以是由若干盘片组成

的盘组,每一盘片上有两个面。

当磁盘驱动器执行读/写功能时。盘片装在一个主轴上,并绕主轴高速旋转,当

磁道在读/写头(又叫磁头) 下通过时,就可以进行数据的读/写了。

一般磁盘分为固定头盘(磁头固定)和活动头盘。

固定头盘的每一个磁道上都有独立的磁头,它是固定不动的,专门负责这一磁

道上数据的读/写。

活动头盘的磁头是可移动的。每一个盘面上只有一个磁头(磁头是双向的,因此

正反盘面都能读写)。它可以从该面的一个磁道移动到另一个磁道,所有磁头都

装在同一个动臂上,因此不同盘面上的所有磁头都是同时移动的(行动整齐划

一),当盘片绕主轴旋转的时候,磁头与旋转的盘片形成一个圆柱体,各个盘面


发布者:admin,转转请注明出处:http://www.yc00.com/web/1712295003a2036461.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信