tikv的写入什么时候算完成

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【概述】:场景 + 问题概述
tikv写入完成的标志是。写入apply-log就算完成,还是写入具体的数据才算完成

【背景】:做过哪些操作

【现象】:业务和数据库现象

【问题】:当前遇到的问题

【业务影响】:

【TiDB 版本】:

【附件】:

1 个赞

Raft log 同步到其他 peer 并多数 peer 返回给 Leader 已经写入成功以后才算写入完成,主要通过 raft 算法来保证,可以理解为 apply log 完成以后,写入数据才算完成。

1 那个leader 所在的node上,是不是需要写入raftlog的raftdb 还是直接写入kvdb?

2 数据写入raftdb所在的rockcksdb上之后就认为写入完成,这个时候是可以read的么? 还是之后同步到kvdb之后才能读到?(不考虑只读leader)

写入 raft db 就可以了;

可以读取的

那么数据读取操作, 两个rockdb是存在公用内存么? 如果不是共用读取的时候不是需要先在raftdb所在的rockdb查看一下,然后再从kvdb是在rockdb查看一下,因为不确定是不是从raftdb落盘到kvdb了,毕竟写入raftdb就算写入完成了

可以参考一下这篇文档哈 https://pingcap.com/blog-cn/how-tikv-store-get-data/


没有看到两个rockdb的读取流程,看到了写入的确认方式,只要写入到raftdb就可以commit了,
但是raftdb数据同步到kvdb也是需要一个流程的是吧? 所以说每次读取都会tikv内部都会先读取raftdb,然后再读取kvdb这样的操作是吧?(如果需要)

Raft RocksDB 参与的写入流程,但是不参与读流程。读流程是在 KV RocksDB 发生的。为了帮你理解这块的逻辑,我找到之前做的一个读写流程的流程图,可以参考一下 。https://asktug.com/_/tidb-performance-map/#/

Hello~ 可以做一下社区用户认证,会有更多权益等你。【已结束】完成认证抽“周边三件套”,解锁“加急”处理问题权限