【TiDB 4.0 PCTA 学习笔记】 2.3.5 How to Use Transactions in TiDB(如何在 TiDB 中使用事务)@1班 李元月

课程名称:

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 只支持行锁

学习过程中参考的其他资料