rocksdb stress test学习笔记
/ / 点击 / 阅读耗时 2 分钟db_stress_tool学习笔记
db_stress_tool/db_stress_driver.cc
概览
整体stress test的逻辑,有两个函数:
ThreadBody
为每一个测试线程(client逻辑)执行的内容;RunStressTest
为具体的测试逻辑,初始化数据库、测试线程等;
测试线程逻辑——ThreadBody
流程:校验db -> 等待所有其他测试线程初始化完毕 -> 操作db(`OperateDb
,包括每一次reopen之后的操作逻辑) -> 等待其他测试线程操作完毕 -> 校验Db -> 等待其他测试线程测试结束
校验db—— no_batched_ops_stress
中的VerifyDb
整体上,VerifyDb
会对每一个CF
进行键值是否匹配的校验,一共四种校验模式,等概率地使用其中一种:
使用prefix iterator获取
CF
中的每一个key,并对比是否与shared_state中的值相同,并调用VerifyOrSyncValue
同步db与shared_state中的值(保持内存中与磁盘中的一致)直接使用Get获取
CF
中的每一个key,其余同上;- 使用MultiGet获取
CF
中的每一个key,其余同上; - 使用MergeOperand获取,其余同上
感谢阅读!欢迎评论嗷~