mysql 事务 缓冲区_mysql8 参考手册--InnoDB的更改缓冲区Change Buffer

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

与聚簇索引不同,二级索引通常是非唯一的,并且二级索引的插入以相对随机的顺序发生。同样,删除和更新可能会影响索引树中不相邻的二级索引页。稍后,当通过其他操作将受影响的页读入缓冲池时,合并缓存的更改可以避免从磁盘将辅助索引页读入缓冲池所需的大量随机访问I / O。

在系统大部分处于空闲状态或缓慢关机期间运行的清除操作会定期将更新的索引页写入磁盘。与将每个值立即写入磁盘相比,清除操作可以更有效地为一系列索引值写入磁盘块。

当有许多受影响的行和许多辅助索引要更新时,更改缓冲区合并可能需要几个小时。在此期间,磁盘I / O会增加,这可能会导致磁盘绑定查询的速度大大降低。提交事务之后,甚至在服务器关闭并重新启动之后,更改缓冲区合并也可能继续发生( 有关更多信息,请参见第15.21.2节“强制InnoDB恢复”)。

在内存中,更改缓冲区占用了缓冲池的一部分。在磁盘上,更改缓冲区是系统表空间的一部分,当数据库服务器关闭时,索引更改将存储在其中。

更改缓冲区中缓存的数据类型由 innodb_change_buffering变量控制。有关更多信息,请参见 配置变更缓冲。您还可以配置最大更改缓冲区大小。有关更多信息,请参见 配置更改缓冲区最大大小。

如果索引包含降序索引列或主键包含降序索引列,则辅助索引不支持更改缓冲。

有关更改缓冲区的常见问题的答案,请参见第A.16节“ MySQL 8.0 FAQ:InnoDB更改缓冲区”。<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值