1 TiDB 从所有要写入的 Key 中选择一个作为当前事务的 Primary Key
2 TiDB 向所有的本次提交涉及到的 TiKV 发起 prewrite 请求,TiKV 判断是否所有 Key 都可以 prewrite 成功
3 TiDB 收到所有 Key 都 prewrite 成功的消息
4 TiDB 向 PD 请求 commit_ts
5 TiDB 向 Primary Key 发起第二阶段提交。Primary Key 所在的 TiKV 收到 commit 操作后,检查数据合法性,清理 prewrite 阶段留下的锁
6 TiDB 收到两阶段提交成功的信息
按照以上的提交顺序,
1 客户端收到commit 成功是在第几阶段提交成功后呢?
2 tikv分为leader和副本那么当提交成功后在每个tidb查询到的数据是否都是一样的呢每个tidb是否会有同步延迟?如果都读取磁盘leader的数据那么是不是一定是一致的?
3 如果prewrite少数节点失败那么这条事务是判断为成功还是失败,后期的数据一致性是如何保证的?