写写冲突发生在 prewrite 阶段,当发现有其他的事务在写当前 Key (data.commit_ts > txn.start_ts),则会发生写写冲突。
这个 data.commit_ts > txn.start_ts 应该怎么理解呀?我的测试是这样的:
SESSION1:
SQL>begin;
SESSION2:
SQL>begin;
SQL>update test set name=‘DDD’ where id=4;
SQL>commit;
SESSION1:
SQL>insert into test values(4,‘ddddddd’);
ERROR 1062 (23000):Duplicate entry ‘4’ for key ‘PRIMARY’
查看tidb.log,提示pessimistic write conflict的报错内容。
我的SESSION2里面已经commit了,为啥还提示写写冲突呢?