TIDB中的如何使用事务+2班+杨凯

事务:

事务是什么:一系列可以被当作一个原子操作的操作集合,保证ACID。
为什么需要事务:数据持久化更安全,并发更安全,观测更安全。

TiDB分布式事务基本原理:

  1. 基于谷歌论文Large-scale Incremental Processing Using Distributed transactions and Notifications实现
  2. 基于SS2PL与MVCC的并发控制策略
  3. 两阶段提交

乐观事务特性:

  1. 快照隔离级别
  2. 所有修改都缓存在TiDB中
  3. 冲突检测只发生在提交阶段(即有可能因冲突导致提交失败,需要客户端重新提交)

悲观事务特性:

  1. 修改缓存在TiDB中时多了一个加锁阶段(即冲突检测发生在提交阶段之前,避免了因冲突导致提交失败)

  1. 支持了当前读
  2. 支持了行锁
  3. 支持了RC隔离级别

如何使用TiDB的事务:

  1. 评估需求

  1. 乐观事务几乎与MySQL完全一样
  2. 悲观事务需要设置tidb_txn_mode="pessimistic"或begin pessimistic来开启,支持死锁检测。