Mysql Change Buffer 示意图
2022-11-16 12:38:02 2 举报
Mysql Change Buffer 示意图
作者其他创作
大纲/内容
flush
等待
当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中 的话,在不影响数据一致性的前提下,InooDB会将这些更新操作缓存在change buffer中,这样 就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内 存,然后执行change buffer中与这个页有关的操作。通过这种方式就能保证这个数据逻辑的正确性。Change Buffer 的场景:在update操作时,内存中没有目标数据页的时候,就会将change操作缓存到buffer中。**所以在写多读少的场景下,读之前写得越多,change buffer 机制的优越性越明显。如果是update之后立马进行查询的场景,change buffer 反而是会增加了系统的负担。Change Buffer 使用的是Buffer Pool 的内存资源,因此change buffer 的大小受限于 buffer pool,可以通过 数`innodb_change_buffer_max_size` 参数进行配置,参数的含义是pct。
read
保持数据一致性
杜绝即时的物理读盘,降低机械运动发生次数
执行 buffer 中的 operation保持数据逻辑正确
merge操作
SelectOperation
Disk
data page in cache?
manipulate data in cache directly
no
结束
Change Buffer
loading
keep the operation in Change Buffer
merge 的触发时机1、访问这个数据页会触发merge2、后台线程定期merge3、数据库正常关闭(shutdown)merge
Cache
Update Operation
yes
0 条评论
下一页