INSERT BUFFER即合并插入缓存,从MySQL 5.1.X版本(innodb 1.0.x)开始引入Changebuffer,是INSERT BUFFER升级版,不仅包括INSERT BUFFER,还包括UPDATE BUFFER、DELETE BUFFER、PURGE BUFFER。
我们可以通过show engine innodb status看到INSERT BUFFER信息。
一条命令解读InnoDB存储引擎—show engine innodb status
Insert BUFFER适用对象:非唯一的辅助索引
Insert BUFFER功能:使随机io变顺序io,提升性能
Mysql5.6(innodb 1.2.x)版本以后引入innodb_change_buffer_max_size参数,控制最大内存使用数量,默认25,表示最多使用1/4的缓冲池内存空间,该参数最大有效值为50。
(root@localhost)>show global variables like '%change_buffer%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
|innodb_change_buffer_max_size | 25 |
| innodb_change_buffering | all |
+-------------------------------+-------+
Create table test1(
Id int auto_increment,
Name varchar(20),
Primary key(id),
Key(name)
)engine =innodb;
Select * from test1;
Id name
1 a
2 c
.
.
.
10000 b
.
.
.
100000 d
.
.
.
1000000 e
Insert into test1(name) valuse(’c’);
Insert into test1(name) valuse(’d’);
1000001 c
1000002 d
首先了解下相关Thread
INSERT BUFFER的频率
可能,1秒,需要判断前1秒的IO次数是否小于5,如果小于5则认为当前压力较小,可以执行合并插入操作。
总是,每10秒,合并最多5个插入缓冲