binlog_transaction_dependency_tracking Bertha 。 2023-01-02 04:28 155阅读 0赞 * 控制事务依赖模式,让从库根据主库写入binlog中的 commit timestamps 或者 write sets 并行回放事务(引入该参数之后,binlog的格式记录的内容中增加了时间戳和write sets信息) * 有三个取值: * COMMIT\_ORDERE:使用 5.7 本来就支持的Group commit 的方式决定事务依赖 * WRITESET:使用 WriteSet 的方式决定判定事务直接的冲突,发现冲突则依赖冲突事务,否则按照 COMMIT\_ORDERE 方式决定依赖 * WRITESET\_SESSION:在 WRITESET 方式的基础上,保证同一个 session 内的事务不可并行 * 全局变量,动态变量,枚举类型,默认值COMMIT\_ORDER,有效值:COMMIT\_ORDER、WRITESET、WRITESET\_SESSION,MySQL 5.7.22 版本引入(>=8.0.1) * PS: * WRITESET 是一个 hash 数组,大小由参数 binlog\_transaction\_dependency\_history\_size 决定,参数 transaction\_write\_set\_extraction 决定 hash 算法,可选值:OFF、MURMUR32、XXHASH64,默认值 XXHASH64,如果WriteSet 记录了事务的更新行信息,决定 commit\_parent时,使用事务自己的 session WriteSet 和 history WriteSet 进行比对,找到最近的冲突行,设为 commit\_parent。如果 WriteSet 找不到 commit\_parent,则还是使用 COMMIT\_ORDERE 决定 commit\_parent * 如果transaction\_write\_set\_extraction为OFF,则binlog\_transaction\_dependency\_tracking变量的值只能设置为COMMIT\_ORDER,设置其他值会报错。另外,如果binlog\_transaction\_dependency\_tracking的当前值为WRITESET或WRITESET\_SESSION,则无法更改transaction\_write\_set\_extraction的值
还没有评论,来说两句吧...