功能介绍
在 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 库的表。 |