如何获取一条数据的所有commitTs

数据库中的一条记录,是否有办法获取到所有的事务commitTs

获取到最近的commitTs,只要没被gc掉,cdc可以获取到所有的commitTs,就想知道有没有更方便快捷的办法

没太理解,是想获取所有操作这行记录的事务的 commitTs?

是要这一条数据从写入到目前,涉及到这一行数据的所有事务吗?

这是要倒查所有数据的修改记录啊,感觉不太可能有吧,数据量太大了

理论上理解是要去查write CF信息,这个好像目前没有专门的工具能够去获取。
除非您将tidb_slow_log_threshold设置为0,将所有的tidb日志都记录下来。就能获取到。但这个日志输出量会非常大,一般生产环境时不建议这样开启的,而且也不建议长时间这样开启。

这个不是类似于开启全库generallog了?

参考这个文章,大概了解下事务:

事务提交后,数据会在 write_cf 或 default_cf 中。
所以,关键在于找到key。key 按照库名+表名+主键 编码的,格式参考:
https://docs.pingcap.com/zh/tidb/stable/tidb-computing#表数据与-key-value-的映射关系

算出了key以后,再去单独的tikv节点上执行 ldb命令就可以查了。
大概扫描一个key的命令如下:

./tikv-ctl  ldb scan --from 7A7480000000000000FF0D00000000000000F8 --to 7A7480000000000000FF1F00000000000000F8 --db=tikv/db --column_family='write' --hex

执行时可能 tikv 还得关闭。
这个扫描只是 kv db中的扫描,raft中可能还有一些提交但是没应用的数据。

以上都是理论,真正实践的话,还得摸索。