点点滴滴 之 Mysql中的Change Buffer和Log Buffer

Change Buffer的作用

Change Buffer是用来缓存那些在Buffer Pool中没有的数据页中的二级缓存。Insert,update,delete等操作会触发缓存动作,并且在数据页缓存进Buffer Pool的时候,会将Change Buffer中的数据合并到缓存的数据页中。

Change Buffer图解

buffer pool

Change Buffer的大小

  • Change Buffer默认占用所有缓存的25%,最高调整到50%
  • 如果当前数据库中的二级索引较少,或者数据库是一个只读数据库,可以关闭Change Buffer
  • 相反如果有大量的update,Delete,Insert操作,可以加大Change Buffer

Change Buffer中的内容写入硬盘

  • 相关数据页和Change Buffer合并,稍后更新的数据页会被写入硬盘
  • 如果数据库是一个比较空闲的或者缓慢停机的状态,会运行清洗操作,将change buffer中的内容写入硬盘,清洗操作往硬盘中写入一系列的索引值,比每次都写入索引值更有效率
  • Change Buffer的写入有可能非常耗时,尤其是众多的行受影响或者二级索引需要更新,在此期间,涉及到硬盘访问的查询(数据没有被缓存)的查询,会收到很大影响
  • 在事务提交之后,服务重启等也会触发Change Buffer写入硬盘
  • 如果二级索引是倒序的,或者主键中包含降序列,不会被缓存进Change Buffer

Log Buffer

日志缓存池用来缓存操作日志,会被存储在日志文件中

  • 默认大小16M
  • 如果Log Buffer足够大,就可以处理大的事务,而不需要在事务提交之前将日志写入磁盘
  • 如果有insert,update,delete很多行,就可以加大Log Buffer,这样可以减少对硬盘的的I/O操

我的个人博客,更易阅读

Change Buffer和Log Buffer

http://www.wangyanan.online

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值