Transaction-batched Active V3 text deltas benchmark
Measured 2026-07-31. The acceptance target passed: for an unpartitioned Active V3 text index, insert transactions changed fromN FTS uploads and N manifest entries to one upload and one manifest entry for batches of 1, 10, 100, and 500. Search-result digests were identical before and after compaction and across all three revisions.
Revisions and protocol
- Three independent runs per case, three warmups per run, and 25 measured samples per run: 75 measured samples per revision, batch size, and latency mode.
- Release builds with
rustc 1.97.1 (8bab26f4f 2026-07-14), LLVM 22.1.6,aarch64-apple-darwin. - Apple M4 Pro Mac16,7, 24 GiB RAM, Darwin 25.5.0. No benchmark revisions ran concurrently.
- Fresh local-filesystem database, identical deterministic documents, configuration, queries, and cache state for every sample.
- Modes were local storage and local storage with a synthetic 1 ms delay applied only to FTS blob uploads.
- Compaction was held through the immediate search measurement. The database was then reopened with automatic compaction and observed until quiescent before the post-compaction search.
- Median and p50 are the same nearest-rank observation. p95 uses index
ceil((n - 1) * 0.95)over the 75 aggregate samples.
Transaction latency and throughput
Times are aggregate p50 / p95 milliseconds. Throughput is aggregate p50 inserts/second.
Against the primary PR #47 baseline, local p50 transaction latency improved by 3.5x, 28.5x, and 84.7x for batches 10, 100, and 500. Under synthetic upload latency, the improvements were 3.5x, 29.5x, and 87.5x.
Primary structural and search comparison
Counts and bytes are p50; their p95 values were identical in every case. Search times are p50 / p95 milliseconds.
The only apparent regression was local batch-1 immediate search: p50 increased by 31 microseconds (3.0%) and p95 by 8 microseconds (0.5%). Transaction latency and post-compaction search improved for that case, and the change is small relative to run dispersion, so it is classified as measurement noise rather than a batching regression.
Correctness and delete-only acceptance
Each batch had one digest across every measured sample, latency mode, revision, and immediate/post-compaction pair:
The insert benchmark does not manufacture a delete-only batch. The production-linked
interpreter_active_text_transactions_batch_by_destination contract separately asserts that delete-only destinations update root/state while producing zero uploads and zero manifest growth.