TiDB 内核解剖室
/
信息图系列
1024 TiDB AIGC 黑客松
03
2PC · DISTRIBUTED TRANSACTION
要么全成,
要么全不成
一次跨 3 个 TiKV 的转账,凭什么保证原子性 ——
prewrite → commit
。
① PREWRITE
写数据 + 加锁
T1 · PRIMARY
locked
T2
locked
T3
locked
全部 prewrite 成功后
→ 取
commit_ts
,提交从 Primary 开始
② COMMIT
提交 + 清锁
T1 · PRIMARY
committed
T2
committed
T3
committed
锁只可能在第一阶段被加上 ——
所以冲突与回滚也只会发生在 prewrite
单事务默认上限 100 MB · 单行上限 6 MB
两阶段
第一阶段
prewrite
写数据并加锁,第二阶段
commit
提交并清理锁。
冲突
冲突检测在
TiKV
内部、发生在
prewrite
阶段 —— 这决定了
回滚只会发生在第一阶段
。
默认
集群默认
悲观事务
(v3.0.8 起);乐观事务自
v8.0.0 起不再自动重试
,需应用自己捕获错误重试。
口径角标 · WHERE THE NUMBERS COME FROM
官方文档正文未展开 Percolator 的
列族级数据布局
—— 所以这张图只画「值 + 锁标记」,一个列族名都不出现。
← 信息图系列
下载高清 PNG