事务:
事务是什么:一系列可以被当作一个原子操作的操作集合,保证ACID。
为什么需要事务:数据持久化更安全,并发更安全,观测更安全。
TiDB分布式事务基本原理:
- 基于谷歌论文Large-scale Incremental Processing Using Distributed transactions and Notifications实现
- 基于SS2PL与MVCC的并发控制策略
- 两阶段提交
乐观事务特性:
- 快照隔离级别
- 所有修改都缓存在TiDB中
- 冲突检测只发生在提交阶段(即有可能因冲突导致提交失败,需要客户端重新提交)
悲观事务特性:
- 修改缓存在TiDB中时多了一个加锁阶段(即冲突检测发生在提交阶段之前,避免了因冲突导致提交失败)
- 支持了当前读
- 支持了行锁
- 支持了RC隔离级别
如何使用TiDB的事务:
- 评估需求
- 乐观事务几乎与MySQL完全一样
- 悲观事务需要设置tidb_txn_mode="pessimistic"或begin pessimistic来开启,支持死锁检测。