聊聊Mysql里的 insert buffer page ,哈哈
mysql> create table myown1(id int,vid int,primary key(id),key idx_vid(vid));
Query OK, 0 rows affected (0.67 sec)
该示例表共有两个index 一个是 主键索引,一个是非主键索引即 二级索引。如图
mysql> select * from myown1;
Empty set (0.08 sec)
mysql> insert into myown1 values(1,111),(2,222);
Query OK, 2 rows affected (0.33 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from myown1;
+----+------+
| id | vid |
+----+------+
| 1 | 111 |
| 2 | 222 |
+----+------+
2 rows in set (0.00 sec)

由于 字段id是主键索引,因此 数值 1,2 都是紧密相连的,两个值可能位于 最左边的那个page中,而vid是普通索引 数值没有排序性,那么111 222 可能位于相差很远的两个page中,当组合查找 id 和vid时得消耗过多的性能,因此mysql 会把两个值所在的page_no 事先放到 insert buffer page,取数据时 直接从 insert_buffer_page 取。
创建时间:2021-12-22 10:55
넶浏览量:0