tidb_disable_txn_auto_retry是否生效

  • 【TiDB 版本】:5.7.25-TiDB-v3.0.9
  • 【问题描述】:
    tidb_disable_txn_auto_retry设置为1,但是我发现tikv层面有锁冲突后,仍然会进行事务重试。结果是导致事务时间变长。
    请问即使tidb_disable_txn_auto_retry设置为1,tikv仍然会重试一次吗?

你好,
辛苦执行下
show global variables like ‘tidb_retry_limit’;
show global variables like ‘tidb_disable_txn_auto_retry’;

image

可以提供下 tikv log 这边是如何判断这个冲突有被重试。


看到这个,目前确定开发人员是通过框架开启的事务控制,同时tidb里面autocommit=1.不知道是不是这个原因,想确认下。

是的, 这个变量不会影响自动提交的隐式事务和 TiDB 内部执行的事务,它们依旧会根据 tidb_retry_limit 的值来决定最大重试次数。
此说明在 tidb 系统变量文档中有所体现

所以如果想关闭 tidb retry 需要使用如果方式进行设置。
set global tidb_disable_txn_auto_retry = on;
set global tidb_retry_limit = 0;


开发使用的mybatis框架来实现的事务功能,应该不会走到autocommit这个隐式提交的情况吧?

tikv log 可以发个完整版,这边看下,从当前日志没看到 autocommit
=0的字样,这个可以查下代码,确定是否有 begin commit 部分,
或者直接在 todb 就讲重试关闭。

hi
请问上面的问题有什么需要反馈吗, set global tidb_disable_txn_auto_retry = on;
set global tidb_retry_limit = 0; 之后是否还出现重试?