MySQL高级讲座篇之:MRR(Multi-Range Read)优化:批量随机读到顺序读的性能革命。

大家好,我是你们的老朋友,今天咱们聊聊MySQL里一个挺有意思的优化策略:MRR,也就是Multi-Range Read。 别看名字高大上,其实它干的事情很简单,就是把随机读变成顺序读,从而大幅提升性能。 想象一下,你平时在图书馆找书,一种情况是图书馆员给你一个书单,你按照书单上的顺序一本一本找,另一种情况是图书馆员随便给你指几本书,你找完这本,再去远处找下一本,再回来找另一本…… 哪种方式更有效率? 显然是第一种,因为顺序查找可以最大化利用空间局部性,减少来回奔波。 MRR 的作用,就是把 MySQL 里的第二种情况,尽可能变成第一种。 一、 啥是 MRR? 为什么要用它? 在深入细节之前,我们先来明确几个概念: 随机读 (Random Read): 数据库根据索引找到数据行的位置后,需要到磁盘上读取这些数据。如果这些数据行的物理位置是分散的,读取的顺序是随机的,这就是随机读。 随机读最大的问题就是磁盘寻道时间。 磁盘寻道,就好比唱片机要找到唱片上的特定位置,磁头需要在盘片上移动,这个动作是相当耗时的。 顺序读 (Sequential Read): 如果数据行的物理位置是连续的,读取 …