课程名称:
201 2.3.5 How to use Transactions in TiDB(如何在 TiDB 中使用事务)
学习时长:
25min
课程收获:
了解 TiDB 中事务相关内容
课程内容:
1. 事务概述
1. 什么是事务?
- 事务是可被作为原子单位处理的一组操作
- 从应用侧:事务是对数据提供 ACID 保证的一种常用数据库机制
2. 我们为什么需要事务?
- 使数据更安全
- 使数据并发操作更安全
- 使应用开发更简单
- 保持一致性
2. TiDB 事务模型的设计
1. TiDB 中的基本分布式事务模型
- 基于 percolator 论文
- 使用 SS2PL + MVCC
- 2PC
- 早期默认使用乐观事务模式
2. TiDB 中的乐观事务模型
- 快照隔离
- 乐观事务的所有未提交修改缓存在内存
- 提交阶段才进行冲突检测
3. TiDB 中的悲观事务模型
- 对数据操作前加锁
- 增加读已提交(RC)隔离级别
- 减少写写冲突
3. TiDB 如何使用事务
1. 评估需要
- 隔离级别
- 应用是否需要加锁操作
- 是否有大量的 DDL 执行
2. 乐观事务模型
- 开始或提交事务:begin, start transaction, commit, rollback
- 使用变量 autocommit = 1 事务自动提交
- 开始或执行新的 DDL 将隐式提交上一个未提交的事务
3. 悲观事务模型
- 设置系统变量 set global tidb_txn_mode=“pessimistic”
- 开始悲观事务:begin pessimistic
- 设置隔离级别:set txn_isolation=“read-committed”
4. TiDB 中锁行为与 MySQL 不兼容的地方
- TiDB 没有 Gap lock
- TiDB 只支持行锁
学习过程中参考的其他资料
无