大事务提交 binlog 优化

最近更新时间:2024-05-08 17:18:51

我的收藏

背景

在数据库中执⾏⼤事务时,其他事务的执⾏会变慢。由于事务执⾏成功的标志是其提交成功,⽽事务提交需要等待其 binlog 落盘,binlog 是按顺序写⼊⽂件的,且要求逐个完整的排队写⼊,即同⼀时间只能写⼀个事务,当某个事务特别⼤时,例如100G,其 binlog 落盘的时间就会很⻓,此时需要提交的其他事务就需要等待该大事务写完,才能接着写入,因此其他事务的执⾏会很慢。

功能介绍

在大事务提交的时候,会写入大量 binlog 日志,导致其他事务长时间无法提交。腾讯云内核团队针对此场景进行了优化,将大事务产生的 binlog 日志重定向到新的临时文件,避免因大事务提交阻塞其他事务而产生额外的处理时间,当该大事务提交后,会更新临时文件为正式的 binlog 日志序列,并更新原数据映射关系。

支持版本

内核版本 TDSQL-C MySQL 版8.0 3.1.12及以上。

适用场景

在数据库中执行大事务以及其他事务场景下,用于缩短大事务提交阻塞其他事务的时间。

使用说明

通过 txsql_non_blocking_binlog_threshold 参数使用该功能,将该参数值设置为非默认值,即可使用该功能,详细参数说明如下:
名称
是否全局
类型
默认
取值范围
说明
txsql_non_blocking_binlog_threshold
全局
ulong
UINT64_MAX
134217728-UINT64_MAX
当事务的日志量大于等于这个值(单位:字节),则事务将使用大事务提交 binlog 优化的方式进行提交。