From 11ea5a1569677affe1f32664cdfad67176479c45 Mon Sep 17 00:00:00 2001 From: abbycin Date: Sun, 23 Nov 2025 10:07:30 +0800 Subject: [PATCH] use snapshot for scan in rocksdb --- rocksdb/main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rocksdb/main.cpp b/rocksdb/main.cpp index 72a679e..6f954ff 100644 --- a/rocksdb/main.cpp +++ b/rocksdb/main.cpp @@ -184,6 +184,7 @@ int main(int argc, char *argv[]) { } handle = handles[0]; + auto *snapshot = db->GetSnapshot(); for (size_t tid = 0; tid < args.threads; ++tid) { auto *tk = &keys[tid]; wg.emplace_back([&, tid] { @@ -196,6 +197,7 @@ int main(int argc, char *argv[]) { ropt.iterate_upper_bound = &upper_bound_slice; } ropt.prefix_same_as_start = true; + ropt.snapshot = snapshot; size_t round = 0; 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(); fmt::println("{},{},{},{},{},{},{}", args.mode, args.threads, args.key_size, args.value_size, ratio, (uint64_t) ops, (uint64_t) b.elapse_ms()); + db->ReleaseSnapshot(snapshot); delete handle; delete db; std::filesystem::remove_all(args.path);