TiDB如何保证数据一致性

1. 分布式事务协议

TiDB 采用了类似 Google Percolator 的分布式事务协议来处理分布式事务。这个协议基于两阶段提交(2PC)的思想,但进行了优化和改进,以适应分布式环境的特殊需求。在 TiDB 中,当一个事务需要跨多个节点执行时,它会首先向协调者(Coordinator)发起事务请求。协调者负责协调整个分布式事务的执行过程。它首先会向所有参与事务的节点发送预提交请求(Prepare Request),这些节点在收到请求后会执行本地事务操作,并将操作结果和状态信息返回给协调者。协调者在收到所有参与节点的响应后,会根据这些信息决定是否提交或回滚事务。如果所有节点都成功执行了本地事务操作并且没有冲突或错误发生,协调者会向所有节点发送提交请求(Commit Request),否则发送回滚请求(Rollback Request)。

TiDB两阶段提交:

TiKV两阶段提交

2. 多版本并发控制(MVCC)

TiDB 使用 MVCC 来实现高效的并发控制和数据一致性。MVCC 通过为每个数据版本分配一个唯一的版本号来实现并发控制。当事务读取数据时,它会获取数据的当前版本号,并基于该版本进行后续操作。其他事务在修改数据时会生成新的版本,而不会影响到正在执行的事务。通过这种方式,MVCC 能够确保并发事务之间的数据隔离和一致性。TiDB 还通过合理的垃圾回收(GC)策略来管理存储空间,确保系统长期稳定运行。

3. Raft 协议

TiKV(TiDB 的分布式存储引擎)使用 Raft 协议来实现数据的一致性和高可用性。每个 Region(TiKV 中的数据分区)的副本组通过 Raft 协议进行日志复制,确保数据一致性。Raft 中的 Leader 负责处理客户端请求,将操作日志复制到 Follower,并在多数副本确认后提交日志。当某个副本故障时,PD(Placement Driver)可以自动将其替换,并通过 Raft 协议确保新的副本能够恢复数据。

相关推荐
赵渝强老师4 天前
【赵渝强老师】TiDB SQL层的工作机制
数据库·sql·tidb
观测云12 天前
TiDB 可观测性最佳实践
tidb
赵渝强老师15 天前
【赵渝强老师】使用TiDB的审计日志
数据库·tidb
可观测性用观测云17 天前
TiDB 可观测性最佳实践
tidb
Sirius Wu17 天前
TiDB 深度解析与 K8S 实战指南
容器·kubernetes·tidb
PingCAP18 天前
PingCAP“一号员工”唐刘:回顾我与 TiDB 的十年成长之旅
数据库·tidb
转转技术团队19 天前
告别人工搬运!TiDB/MySQL双库同步工具如何为业务提效100%?
mysql·tidb·测试
MiniFlyZt24 天前
分布式数据库TiDB:架构、核心特性与生产实践(分库分表)
java·数据库·分布式·spring cloud·微服务·tidb
PingCAP25 天前
从单一到多活,麦当劳中国的数据库架构迁移实战
数据库·tidb
XMYX-01 个月前
TiDB 部署指南(单机模式)& CentOS 7 安装 MariaDB 教程
centos·tidb·mariadb