内容提要
TiKV TSO是TiDB实现分布式事务的基石,由physical time和logical time组成。可以使用在线转换工具将TSO转换为现实时间。
延伸解读
TSO 的组成与分配要求
TSO 是一个 int64 整数,由 physical time 和 logical time 两部分组成。physical time 是当前 Unix 时间的毫秒值,logical time 是一个最大为 1 << 18 的计数器。PD 需要快速大量地分配 TSO,并保证其单调递增,不能回退,这是 TiDB 分布式事务的基础。
在线转换工具的使用
页面提供了 TSO 与现实时间(UTC)的双向转换工具。用户输入 TSO 时间戳即可转换为现实时间,或选择现实时间转换为 TSO。这有助于在调试或分析时快速理解时间戳对应的实际时间。
解析与生成 TSO 的代码示例
文章给出了 Go 语言示例:解析 TSO 时,将 TSO 右移 18 位得到毫秒时间戳,再除以 1000 转换为秒,最后用 time.Unix 得到时间;生成 TSO 时,将毫秒时间戳左移 18 位即可。这展示了 TSO 的位运算逻辑。
Q&A
什么是TiKV TSO?
TiKV TSO是TiDB实现分布式事务的基石,由physical time和logical time组成。
TSO是如何构成的?
TSO由一个int64整形组成,包含当前unix时间的毫秒(physical time)和最大1 << 18的计数器(logical time)。
如何使用在线工具转换TSO时间戳?
可以通过在线转换工具输入TSO时间戳或现实时间(UTC)进行转换,获取对应的结果。
TSO的分配有什么要求?
TSO必须快速且单调递增地分配,不能出现回退的情况。
能否提供TSO转换的示例代码?
示例代码展示了如何解析和生成TSO时间戳,包括使用Go语言的相关函数。
TSO的logical time最大值是多少?
TSO的logical time最大值为1 << 18。