innodb change buffer 初识
2017-08-12 20:07
246 查看
What
change buffering是MySQL5.5加入的新特性,change buffering是insertbuffer的加强,insert buffer只针对insert有效,change
buffering对insert、delete、update(delete+insert)、purge都有效。当修改一个索引块(secondary
index)时的数据时,索引块在buffter pool中不存在,修改信息就会被cache在change
buffer中,当通过索引扫描把需要的索引块读取到buffer pool时,会和change buffer中修改信息合并,再择机写回disk。
Why
目的还是为了减少随机IO带来性能损耗,说明白了:把随机IO尽量变成顺序IO。现在SSD盛行,在SSD上随机访问和顺序访问性能几乎差不多的情况下,change
buffering特性不会带来多大的性能提升,但对于廉价的机械硬盘,这个参数还是能帮助提高性能的。
为什只针对二级非唯一索引有效?
因为change buffer设计,并不判断唯一性。如果判断唯一性,还需要将磁盘上未放到buffer pool的页加载到内存,再进行判断唯一性。而change
buffer设计的初衷,就是为了当二级索引页不在内存时,不进行加载,先将其插入到change buffer的B+树中,最后merge到二级索引页中,减少多次随机IO的访问。
相关文章推荐
- InnoDB关键特性之change buffer
- mysql-5.7 innodb change buffer 详解
- InnoDB change buffer
- InnoDB关键特性之change buffer
- innodb之change buffer主动merge
- Innodb Buffer Pool内部结构
- innodb_buffer_pool_size innodb_log_buffer_size
- innobackupex-1.5.1: fatal error: no 'innodb_buffer_pool_filename'解决方法
- innodb insert buffer 插入缓冲区
- InnoDB: Cannot allocate memory for the buffer pool
- Configuring the Rate of InnoDB Buffer Pool Flushing
- MySQL5.7新特性:innodb-buffer-pool-size新特性
- innodb buffer pool管理--数据页的访问
- 14.6.3.5 Configuring InnoDB Buffer Pool Flushing
- InnoDB Buffer Pool 说明
- 提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances
- MySQL Dumping and Reloading the InnoDB Buffer Pool(MySQLdump和重载InnoDB缓冲池)
- Innodb buffer pool struct
- bulk_insert_buffer_size and InnoDB
- innodb_buffer_pool_size的安全上限