为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】
TIKV 4.0.8
【问题描述】
我们系统想使用tikv集群存储元数据,想了解下tikv能不能跟踪写请求(RawDelete、RawPut)的执行顺序?
现在有个需求是希望客户端对 相同的KEY 调用RawDelete或RawPut接口的时候不仅能知道执行结果,也想知道内部执行的顺序。
我们的业务场景是这样的:
对同一个key操作后是以多版本保留的,假如操作顺序是put keya → del keya → put keya后多版本状态为:
version = 1,keya put
version = 2,keya del
version = 3,keya put
所以为保持tikv存储的数据状态和多版本的最终状态(最大version)一致需要tikv返回具体的执行序列号,将序列号做为业务版本(version)排序后能保持数据版本内外一致(tikv内部和业务)。
看了部分tikv的代码了解到有可能支持这一需求的是将raft阶段对应的 commit index或apply index返回给客户端,raft是顺序执行的,commit index或apply index应该就代表了请求的执行顺序,我是这么理解的,当然还要考虑region分裂的问题。
这样做是否有可行性或该怎么做,望指教:pray:
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。