You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于YugabyteDB中safe_time使用的澄清问询

YugabyteDB safe_time 读取一致性问题解答

请问分布式事务从关联 tablets 选取 safe_time,且 safe_time 参考首个未提交 raft log 的混合时间戳的设计,是否意味着 YugabyteDB 可保证所有事务均能读取到其启动前已提交事务写入的数据?

首先给出明确结论:是的,该设计正是为了实现这项一致性保证,在YugabyteDB默认的快照隔离、以及更高的可串行化隔离级别下,该承诺始终成立。

核心实现逻辑说明

  • 每个 tablet 的 safe_time 取当前 Raft 日志队列中首个未提交日志的混合时间戳(HLC)的前值,所有时间戳小于 safe_time 的事务都已经完成 Raft 多数派提交,变更已持久化对后续读操作可见。
  • 分布式事务启动时会先获取全局唯一的启动时间戳,执行读取操作时,会从本次读取涉及的所有关联 tablet 分别拉取各自的 safe_time,取所有 safe_time 的最小值作为本次读取的快照时间边界。只要事务启动时间戳小于这个边界,就能完整获取所有事务启动前已提交的写入数据。
  • 这套机制从底层规避了脏读、不可重复读问题,确保事务的所有读取操作都对应全局一致的时间快照,不会遗漏事务启动前任何已提交的写入结果。

内容的提问来源于stack exchange,提问作者MarkoR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 09:09:03