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