知识卡片

TrueTime换顺序

普通读书笔记卡 · 1775.e

内容

Spanner 用 TrueTime 的 TT.now() 返回一个带不确定区间的时间戳而非单点时间,凭借跨数据中心全局可比的提交时间戳排出事务序列化顺序:一个事务的提交时间戳早于另一个事务开始后的提交时间戳,就能保证全局外部一致性。

参考来源

- 位置:《大数据日知录:架构与算法》第10章《列式数据库》"10.4.3 TrueTime"一节(源文件:_epub-src/OEBPS/text00015.html) - 结论依据:原文明确"TT.now()……并非返回具体的时间点,而是返回一个时间区间TTinterval,TrueTime保证调用TT.now()的触发事件真实发生的时间一定落在这个时间区间之内",并说明"通过TrueTime机制为分布式事务打上具有全局比较意义的时间戳……可以将其作为事务序列化顺序的依据……如果事务T1的提交时间早于事务T2的开始时间,那么T1的提交时间戳要小于T2的提交时间戳"。原文未描述"等待不确定窗口过去再提交"(commit wait)这一实现细节,故本卡不作此断言,避免超出原书内容。 - 原始内容:TT.now()……其并非返回具体的时间点,而是返回一个时间区间TTinterval,TrueTime保证调用TT.now()的触发事件真实发生的时间一定落在这个时间区间之内,这种时间区间代表了时间表述的有界的不确定性……如果事务T1的提交时间早于事务T2的开始时间,那么T1的提交时间戳要小于T2的提交时间戳,即可以依据提交时间戳的大小顺序来将分布式事务全局序列化。