tidbv3.0.8悲观锁不起作用

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v3.0.8
  • 【问题描述】: tidb v3.0.1滚动升级到tidb v3.0.8,v3.0.8默认是已经开启悲观锁的,但是在测试的过程中发现貌似锁不住

事务1:

①begin;

②select * from student_info where id =3 for update;

③commit;

事务2:

①begin;

②update student_info set name = 'omni' where id = 3;

③commit;

执行顺序: 事务1 ①②执行完后,开始执行事务2 ①②,正常情况下执行到事务2中的②时,就应该锁住等待的,但是实际情况是两个事务执行到③的时候,后执行commit的才会报错

1、首先滚动升级到 3.0.8 是没有开启悲观事务的,沿用的仍然是原升级前的配置,需要参考下述链接配置悲观事务模式:

2、如果是新部署一套环境,那么默认是开启悲观事务的。

如果我需要升级后默认开启呢,需要怎么弄呢?因为之前有个default:true后,默认就是悲观锁的

我在v3.0.1中是有开悲观锁的,升级完后

show variables like ‘tidb_config’;

显示

"pessimistic-txn": {
		"enable": true,
		"max-retry-count": 256
},

这个显示是有开启悲观锁的,但是表现出来的结果确是乐观锁, 我执行完

set @@tidb_txn_mode = ‘pessimistic’;

后,才表现出悲观锁的特性

v3.0.1升级到v3.0.8时,需要手动执行

set @@tidb_txn_mode = ‘pessimistic’;

开启全局悲观锁

:+1::+1::+1: