【单选】在 TiDB 中,事务提交时两阶段提交(2PC)最主要的网络开销集中在?
A. 向 PD 获取 TSO
B. 向所有涉及的 TiKV 发起 Prewrite
C. 执行 Commit 操作
D. 事务内 SQL 语句的执行
prewrite是写日志,为啥主要的网络开销也在这
【单选】在 TiDB 中,事务提交时两阶段提交(2PC)最主要的网络开销集中在?
A. 向 PD 获取 TSO
B. 向所有涉及的 TiKV 发起 Prewrite
C. 执行 Commit 操作
D. 事务内 SQL 语句的执行
prewrite是写日志,为啥主要的网络开销也在这
分布式shi事物要不通节点多副本确认
详细过程
Prewrite 并不是简单写日志。
它要做:
向所有涉及的 region 写入锁 + 数据 + MVCC
流程:
TiDB
↓
找到涉及的所有 region
↓
向每个 region 的 leader 发送 prewrite
例如:
事务修改 1000 行
可能分布在:
50 个 region
那么:
需要 50 次 RPC
每个 region:
写锁
写 value
写 default CF
写 write CF
检查冲突
检查锁
写 raft log
复制到 follower
这一步非常重。
写锁那些事其他的开销,不明白为啥会体现在网络开销里面
事务涉及多少个 Region,就发多少次 Prewrite 请求
大表、多行事务 → 几十、上百次网络交互
好的,这么说就明白了
与读写的region有很大关系,还有分布的标签情况
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。