Repository navigation
perf(mem_wal): optimize Blob v2 writes and promotion - #9717
Open
jackye1995 wants to merge 14 commits into
Open
jackye1995 wants to merge 14 commits into
jackye1995 wants to merge 14 commits into
Conversation
jackye1995
force-pushed
the
jack/blob-v2-group-commit
branch
3 times, most recently
from
October 5, 2026 19:51
b3c253f to
0314553
Compare
jackye1995
force-pushed
the
jack/blob-v2-group-commit
branch
from
October 8, 2026 15:51
e7da2d9 to
cf25695
Compare
jackye1995
force-pushed
the
jack/blob-v2-group-commit
branch
from
October 9, 2026 01:21
cf25695 to
1c35f12
Compare
jackye1995
force-pushed
the
jack/blob-v2-group-commit
branch
from
October 9, 2026 03:06
1c35f12 to
84fd581
Compare
xuanyu-z
approved these changes
Oct 9, 2026
xuanyu-z
left a comment
Contributor
There was a problem hiding this comment.
Nice! Overall looks great!
Contributor
There was a problem hiding this comment.
Group packing, dynamic flush boundaries, and the cancellation fence remain sound. The accepted promotion trade-off adds read and upload buffers for each active shard writer. Aggregate memory grows with shard concurrency and multipart part sizes; include those buffers in deployment memory budgets while retaining per-shard flush serialization.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Combines the complete MemWAL optimization stack and supersedes #9704.
Benchmark protocol
9c0dcd606d02218f1ed8a54aaa46f71c41f7817e(the follow-up commit only renames regression tests)LAION-100K multimodal KV on S3
The exact approved head preserves the target object-store result: Lance is 1.11x faster on S3 at window 32 while persisting 48.2% fewer bytes. Against the prior valid campaign, window-32 throughput changed by -2.9% and its object count moved from 459 to 463, both within run-to-run variation. SlateDB remains 1.26x faster for sequential S3 writes.
One-million-row non-blob control on S3
The cadence fix materially improves sequential Lance throughput and keeps integer/window-32 ahead. UUID/window-32 is 5.4% below SlateDB, while Lance retains lower bytes and substantially lower S3 point-read latency. The earlier Lance UUID/window-32 runs ranged from 111 to 152 Krows/s; the new 130--138 Krows/s range differs by about 3% in mean and does not establish a throughput regression. The corrected cadence increases non-blob window-32 WAL objects from the earlier 44--46 to 74 because elapsed intervals can no longer be postponed by later writes; the previous claim that Lance always produced no more objects than SlateDB has therefore been removed.
Verification
approve with a non-blocking riskon the current test-only head; aggregate streaming-promotion memory scales with concurrently active shard writers.pylance==14.0.0b10/lance-namespacedependency-resolution failure as currentmain.cargo test -p lance --lib dataset::mem_walpasses 789 tests with one ignored; all three shared-blob-pack durability regressions pass after the test-name cleanup; exact all-feature Clippy passes.