MySQL Buffer pool里的change buffer是什么

发布时间:2021-03-29 10:11:10 作者:小新
来源:亿速云 阅读:194

小编给大家分享一下MySQL Buffer pool里的change buffer是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

4 change buffer

4.1 基本概念

change buffer是一种特殊的数据结构,当这些页面不在缓冲池中时,这些高速缓存会将更改缓存到辅助索引页面。可能由INSERT,UPDATE或DELETE操作(DML)导致的缓冲更改将在以后通过其他的读取操作将页加载到缓冲池中时合并。
MySQL Buffer pool里的change buffer是什么

相关免费学习推荐:mysql视频教程

如上图可见,change buffer用的是buffer pool里的内存,所以不能无限增长。change buffer大小可通过参数innodb_change_buffer_max_size动态设置。
比如设置为50:change buffer的大小最多只能占用buffer pool的50%。

需更新一个数据页时:

在下次查询访问该数据页时,才将数据页读入内存,然后执行change buffer中与这个页有关的操作。通过该方式就能保证该数据逻辑的正确性。

change buffer 实际上也是可持久化的数据,即它不仅在内存中有拷贝,也会被写进磁盘。

4.2 merge

将change buffer中的操作应用到原数据页,得到最新结果的过程。

4.2.1 触发时机

  1. 访问该数据页

  2. 系统后台线程定期merge

  3. 数据库正常关闭(shutdown)的过程

若能将更新操作先记录在change buffer,减少读盘,语句执行速度便会明显提升。且数据读入内存需要占用buffer pool,因此也能降低内存占用,提高内存利用率。

4.3 何时使用change buffer

4.4 适用场景

难道普通索引的所有场景,使用change buffer都可加速吗?

注意merge才是真正进行数据更新时刻,change buffer主要是将记录的变更动作缓存。所以在一个数据页做merge前,change buffer记录变更越多(即该数据页上要更新的次数越多),收益越大。

以上是“MySQL Buffer pool里的change buffer是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. MySQL中普通索引和唯一索引有什么区别
  2. MySQL普通索引和唯一索引的深入讲解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql buffer pool change buffer

上一篇:php字符串如何转换为整数

下一篇:php如何实现注册功能

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》