Skip to content

binlog_transaction_dependency_tracking

xiaoboluo768 edited this page Jun 14, 2020 · 2 revisions
  • 控制事务依赖模式,让从库根据主库写入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的值

上一篇:log_output | 下一篇:innodb_buffer_pool_size

Clone this wiki locally