MySQL 的 MRR 到底是什么?
MySQL 里有个东西叫 MRR,全称「Multi-Range Read Optimization」。
简单说,MRR 通过:
- 把「随机磁盘读」,转化为「顺序磁盘读」
从而:
- 提高了磁盘读取的性能
至于:
- 为什么要把随机读转化为顺序读?
- 怎么转化的?
- 为什么顺序读就能提升读取性能?
咱们开始吧。
磁盘:苦逼的底层劳动人民
执行一个范围查询:
mysql > explain select * from stu where age between 10 and 20;
+----+-------------+-------+-------+------+---------+------+------+-----------------------+
| id | select_type | table | type | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+----------------+------+------+-----------------------+
| 1 | SIMPLE | stu | range | age | 5 | NULL | 960 | Using index condition |
+----+-------------+-------+-------+----------------+------+------+-----------------------+