binlog 写入优化

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

我的收藏

功能介绍

在 row 模式下,单个语句更新多行的大事务每行会生成1个 event,会产生大量 binlog,导致数据库性能下降。腾讯云内核团队通过对大事务场景的分析和优化,开发了该能力,binlog 写入优化功能将自动识别大事务,并将 row 模式的 binlog 转化为 statement 格式的 binlog,并支持使用正则表达式设置生效的库表,从而减少 binlog 并提升数据库的使用性能。

支持版本

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

适用场景

该功能主要提升 row 模式下无主键表的大事务回放速度,在确定是由无主键回放慢导致延迟时可以打开。

使用说明

binlog 写入优化功能是基于 SQL 历史执行的统计情况去判断它是否有可能是大事务;当识别为大事务时并且有可能被优化时,会自动将它的隔离级别提升至 RR(可重复读)的级别,将 binlog 落成 Statement 格式。
txsql_optimize_large_trans_binlog_mode 为该功能的开关。
当 txsql_optimize_large_trans_binlog_mode 设置为 PART 时,只对满足 txsql_optimize_large_trans_binlog_tables 设置的正则表达式的表生效。例如:
set global txsql_optimize_large_trans_binlog_tables = "test.t3,test.t4";
set global txsql_optimize_large_trans_binlog_tables = "test.t*";
set global txsql_optimize_large_trans_binlog_tables = "somedb*.t1";


参数说明

名称
是否全局
类型
默认
取值范围
说明
txsql_optimize_large_trans_binlog_mode
全局
enum
OFF
OFF/ALL/PART
binlog 写入优化的开关,ALL 表示对所有表生效大事务 binlog 优化,PART 表示对正则生效,OFF 表示关闭功能。
txsql_optimize_large_trans_binlog_tables
全局
char
*.*
-
*.* 指 PART 模式下指定 dbname.tablename。
dbname 和 tablename 均支持正则,如"somedb.t1",表示库 somedb 和 表 t1均支持正则。
若设置为 test.*,则表示 test 库下的所有表均支持正则,包括设置后新增到 test 库的表。