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 |
+----+-------------+-------+-------+----------------+------+------+-----------------------+