14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering

本文介绍了InnoDB的Change Buffering特性,它通过缓存二级索引更改来减少磁盘I/O操作,适用于I/O密集型负载场景。文章还详细解释了如何通过innodb_change_buffering参数控制该特性的开启或关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

14.4.5 Configuring InnoDB Change Buffering  配置InnoDB  Change Buffering


当INSERT,UPDATE,和删除操作在表上操作, 索引列的值(特别是secondary keys的值)


通常是不排序的,需要真正的I/O。


InnoDB 有一个change buffer 来caches 改变到secondary index  entries


当相关的page 不在buffer pool,从而避免昂贵的I/O操作不立即从磁盘读取。


buffered changes 会被合并当page 被加载到buffer pool, 更新的page 随后刷新到磁盘。


InnoDB 维护线程合并 buffered 改变当server 空闲的时候, 或者在一个slow shutdown .




因为它能使得更少的磁盘读和写,change buffer 功能是很有价值的对于负载是I/O密集型的,

比如 应用有大量的DML 比如bulk inserts:


然而, change buffer 占据了buffer pool的一部分, 降低了可用内存来cache data pages.


如果工作集几乎沾满了buffer pool,或者如果你的表有相对少的secodary indexes,

你可以关闭change buffer.

如果工作集沾满了整个buffer, change buffering 不会强加额外的负载,

因为它只应用pages 不在buffer poo里的。



你可以控制extent  InnoDB 执行change buffering 使用innodb_change_buffering  配置参数。

你可以启用或者关闭 buffering 用于插入,删除操作(当index records 是最初标记为删除的)

和purge 操作( 当index record 是被物理删除)


一个update 操作是一个插入和删除的组合  默认innodb_change_buffering value is all.



innodb_change_buffering  值允许的值:

1.all

默认值: buffer inserts, delete-marking operations, and purges.



none


不buffer 任何操作


inserts

buffer insert 操作


deletes
























转载于:https://www.cnblogs.com/zhaoyangjian724/p/6199788.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值