TiKV TSO 时间戳 - 在线转换工具

TiKV TSO 时间戳 - 在线转换工具

💡 原文中文,约900字,阅读约需3分钟。
📝

内容提要

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。

🏷️

标签

➡️

继续阅读