# 分布式事务

![`smart`](PercolatorTiKV01_en_001_20220511.png)

-----------------------------------------------------------------------
分布式事务用于分布式数据库，如TiDB，以确保跨多个节点或区域的操作的一致性和原子性。这很重要，因为在分布式系统中，不同节点上的操作可以同时执行，这可能会导致不一致性和冲突。

TiDB使用Google的Percolator系统的修改版本来支持分布式事务，该系统基于两阶段提交（2PC）协议。在这个系统中，数据库集群中的每个节点由PD（Placement Driver）组件分配全局唯一且单调递增的时间戳。这个时间戳用于标识事务的开始和提交时间，并确保操作按正确的顺序执行。

TiDB中，Percolator系统在RocksDB实例中使用三个列族来存储数据、事务和锁定信息。这些列族被称为默认列族、写入列族和锁定列族。例如，当对键值对执行写操作时，该键的锁定信息将被记录在锁定列族中，而值则存储在默认列族中。如果事务成功提交，则锁定信息将被删除，并更新的值被记录在默认列族中。

总的来说，TiDB 中的分布式事务支持可以跨多个节点或区域进行一致性和原子性操作，确保数据库中数据的完整性和可靠性。