tidb 事务一致性

tidb 分布式事务,是怎么一个过程呢,是如何保证事务一致性的,会不会存在半提交的情况啊

1 个赞

TiDB 最佳实践 | TiDB 文档中心
建议还是看官方文档说的比较细

可以参考下这个 blog:
https://andremouche.github.io/tidb/transaction_in_tidb.html

事务就是保证一致性呀,怎么会半提交。

两阶段提交(2PC)和Paxos共识算法来实现分布式事务的一致性。以及持久化日志记录
我理解有可能,但是一系列的功能和算法尽量减少了半提交的可能性。

部分参与者已经提交而其他参与者未能成功提交的情况
1 个赞

propose阶段

当写入请求发送到Tikv,再到Region的leader上先把写入内容转化成raft log日志

append阶段

把本地raft log日志持久化存到raft db中,只是leader节点

replicate阶段

raft log分发到两个follower节点
append: 把follower节点的raft log日志持久化存到raft db中

committed阶段

当其他follower节点持久化后会返回响应值
大多数节点都持久化了就commit了
如果follower都没收到那就commit不了
此时的committed跟SQL语句的commit不一样 这个是raft log日志写入(类似于redo)

apply

将raft log日志写入到raft_db-kv中
这时候用户的commit才返回
2 个赞

看了你的描述,又看视频,明白了

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