use snapshot for scan in rocksdb

This commit is contained in:
abbycin 2025-11-23 10:07:30 +08:00
parent 90788721b2
commit 11ea5a1569
Signed by: abby
GPG Key ID: B636E0F0307EF8EB

View File

@ -184,6 +184,7 @@ int main(int argc, char *argv[]) {
} }
handle = handles[0]; handle = handles[0];
auto *snapshot = db->GetSnapshot();
for (size_t tid = 0; tid < args.threads; ++tid) { for (size_t tid = 0; tid < args.threads; ++tid) {
auto *tk = &keys[tid]; auto *tk = &keys[tid];
wg.emplace_back([&, tid] { wg.emplace_back([&, tid] {
@ -196,6 +197,7 @@ int main(int argc, char *argv[]) {
ropt.iterate_upper_bound = &upper_bound_slice; ropt.iterate_upper_bound = &upper_bound_slice;
} }
ropt.prefix_same_as_start = true; ropt.prefix_same_as_start = true;
ropt.snapshot = snapshot;
size_t round = 0; size_t round = 0;
barrier.arrive_and_wait(); barrier.arrive_and_wait();
@ -262,6 +264,7 @@ int main(int argc, char *argv[]) {
uint64_t ops = total_op.load(std::memory_order_relaxed) / b.elapse_sec(); uint64_t ops = total_op.load(std::memory_order_relaxed) / b.elapse_sec();
fmt::println("{},{},{},{},{},{},{}", args.mode, args.threads, args.key_size, args.value_size, ratio, (uint64_t) ops, fmt::println("{},{},{},{},{},{},{}", args.mode, args.threads, args.key_size, args.value_size, ratio, (uint64_t) ops,
(uint64_t) b.elapse_ms()); (uint64_t) b.elapse_ms());
db->ReleaseSnapshot(snapshot);
delete handle; delete handle;
delete db; delete db;
std::filesystem::remove_all(args.path); std::filesystem::remove_all(args.path);