TiDB 事物:
最初tidb 选择的时乐观事务模型,几个特性:
1)提供了一个快照隔离级别,所有事物看到的是一个全局快照
2)所有修改都被缓存在tidbd内存当中。类似于mysql affected rows值在tidb中无实际意义。?
3)乐观事物只有在提交时才会进行冲突检测。如果检测到冲突而回滚,需要app重新提交事物。
从3.0开始引入悲观事物模型,3.0.8以后默认是悲观事物模型:
begin/ddl语句都会隐士提交前一个事物:
悲观事物模型三个变量:
set global tidb_trn_mode=‘pessimistic’
执行事物时指定:begin pessimistic
set tx_isoloation=‘read-committed’
tidb 在悲观事物模型下:只对读取的数据加锁,不支持gap锁。