【TiDB 4.0 PCTA 学习笔记】- 2.3.5 How to use Transactions in TiDB(如何在 TiDB 中使用事务)@ 1班+杨雷雨

课程名称:课程版本(101)+ 2.3.5 How to use Transactions in TiDB(如何在 TiDB 中使用事务)

学习时长:20min

课程收获:了解如何在 TiDB 中使用事务

课程内容:

一、事务的基本介绍

1、概念

A、一系列可以合并在一起的动作作为一个原子单元
B、一种为并发数据处理提供ACID的机制
C、商业社会业务稳定操作的基石
D、官方定义:访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

2、为什么需要事务?

A、使数据安全
B、使并发操作更安全
并发时会有以下冲突
1) 读-写冲突
2) 写-写冲突
3) 管理冲突
C、使应用开发更简单
1) 状态总是一致
2) 约束总是一致
3) 每个工作流是隔离的

二、TiDB事务

1、分布式事务原理

image
A、Google percolator paper
B、并发控制策略:SS2PL+MVCC
C、两阶段提交

2、早期版本TiDB使用乐观事务模型

image
乐观事务模式的重要特性
1) 快照隔离级别的事务隔离
2) 事务调度: TiDB
3) 变更保存在TiDB的memory buffer中
4) 写-写冲突(提交操作才有事务检测)

3、3.0版本引入悲观事务模型

image
悲观事务模式的重要特性
1) 支持当前读
2) 在DML中加锁
3) 减少写-写冲突
4) 支持读提交隔离级别

三、如何使用TiDB的事务

1、业务需求

A、隔离级别是快照隔离还是读提交
B、是否需要锁机制
1) 怎样配置锁等待超时
2) 锁等待机制是否有必要
C、是否需要可重复读
D、是否有很多并发DDL

2、乐观模式

A、基本语法

1 开始或提交事务: begin, start transaction, commit, rollback
2 使用autocommit=1自动提交
3 begin语句隐式提交当前事务并开始一个新事务
4 DDL语句会隐式提交事务并开始一个新事物

B、乐观事务模式示例

image

3、悲观模式

3.0开始,3.0.8之后作为默认事务模式

A、基本语法

1) set gloabl tidb_txn_mode = “pessimistic”
2) 单个事务,begin pessimistic
3) set tx_isolation=“read-commited”

B、悲观事务模式示例

image

4、死锁

悲观事务模式提供死锁检测
image

5、悲观锁与MySQL部分不兼容

A、TiDB不支持间隙锁
B、TiDB只支持对读到的数据加锁
C、https://docs.pingcap.com/zh/tidb/stable/pessimistic-transaction
D、https://pingcap.com/blog-cn/tidb-4.0-pessimistic-lock

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

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。