知识卡片

外部一致性靠时间边界

普通读书笔记卡 · 1723

内容

Spanner 要求若事务 T2 在 T1 提交完成后开始提交,则 T2 的时间戳必须大于 T1。TrueTime 返回时间区间而非点,系统用未来时间戳和 commit wait 把真实顺序压进时间戳顺序。

参考来源

- 位置:《分布式系统与一致性》第8章《Google的Spanner数据库》"8.4.1 Spanner的外部一致性"一节(源文件:_epub-src/OEBPS/Text/chapter12.xhtml) - 结论依据:原文给出外部一致性的精确定义:"对于任意两个事务T1和T2……如果事务T2在事务T1完成提交之后开始提交,那么事务T2的时间戳一定大于事务T1的时间戳",并说明TT.now()返回时间区间而非单点,需要用commit wait把时间戳顺序压进真实提交顺序。 - 原始内容:Spanner对外部一致性的定义如下:对于任意两个事务T1和T2(即使这两个事务分别在地球的两侧),如果事务T2在事务T1完成提交之后开始提交,那么事务T2的时间戳一定大于事务T1的时间戳……TT.now()方法用来获取当前时间。这个方法返回一个时间范围[earliest,latest]。