背景
在数据库中执⾏⼤事务时,其他事务的执⾏会变慢。由于事务执⾏成功的标志是其提交成功,⽽事务提交需要等待其 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 优化的方式进行提交。 |