例如:
- 有两个项目,k1 和 k2,时间为 t1。
- 然后,一个读事务(A)得到一个时间为 t1 的快照。事务(A)用 t1 成功读取了 k1。
- 同时,另一个事务(B)在时间 t2(t2>t1)写入 k2。
- yugabytedb 以某种方式进行垃圾收集,因此带有 t1 的 k1 将被删除。
- 如果事务(A)在时间 t1 读取 k2,它将找不到时间小于 t1 的任何版本的 k2。
我很困惑 yugabytedb 如何保持一致的快照。
几乎搜遍了 yugabytedb 的事务文档,但没有找到任何与垃圾回收相关的内容。
我看过google spanner关于垃圾回收的一些描述,就是将旧版本保留一小时。但是yugabytedb使用HLC而不是Truetime。
谁能介绍一下yugabytedb的垃圾回收机制?和扳手一样吗?