-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
release-23.2: bump Pebble and split snapshot sstables #134526
release-23.2: bump Pebble and split snapshot sstables #134526
Conversation
cockroachdb/pebble@19b47dc9 db: avoid loading later files for a level in SeekPrefixGE cockroachdb/pebble@74498653 db: export MakeTrailer cockroachdb/pebble@96bee8ff internal/keyspan: export Truncate in keyspan.Fragmenter. Release note (performance improvement): Avoid loading unnecessary file blocks shortly after a rebalance in a rare case. Epic: none
Previously, we'd only create one sstable for all mvcc keys in a range when ingesting a rebalance/recovery snapshot into Pebble. This increased write-amp in Pebble as more sstables would have to be compacted into it (or the sstable then split into smaller ones in Pebble), and had other consequences such as massive filter blocks in the large singular sstable. This change adds a new cluster setting, kv.snapshot_rebalance.max_sst_size, that sets the max size of the sstables containing user/mvcc keys in a range. If an sstable exceeds this size in multiSSTWriter, we roll over that sstable and create a new one. Epic: CRDB-8471 Fixes: cockroachdb#67284 Release note (performance improvement): Reduce the write-amplification impact of rebalances by splitting snapshot sstable files into smaller ones before ingesting them into Pebble.
Thanks for opening a backport. Please check the backport criteria before merging:
If your backport adds new functionality, please ensure that the following additional criteria are satisfied:
Also, please add a brief release justification to the body of your PR to justify this |
This change updates the snapshot strategy's sender side to iterate over points and ranges together, instead of only iterating on points first, then only ranges. This allows us to more efficiently split snapshot sstables on the receiver side. To avoid the need to add a version gate on the receiver side, we propagate a bool, RangeKeysInOrder, to the receiver which is a signal to it to enable sstable splits. Fixes cockroachdb#129026. Epic: none Release note: None
6cc931b
to
e17115b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 4 of 4 files at r1, 4 of 4 files at r2, 29 of 29 files at r3, all commit messages.
Reviewable status: complete! 1 of 0 LGTMs obtained (waiting on @aadityasondhi)
TFTR! |
blathers backport 23.2.15-rc |
Based on the specified backports for this PR, I applied new labels to the following linked issue(s). Please adjust the labels as needed to match the branches actually affected by the issue(s), including adding any known older branches. Issue #67284: branch-release-23.2.15-rc. 🦉 Hoot! I am a Blathers, a bot for CockroachDB. My owner is dev-inf. |
Backport 1/1 commits from #129018.
/cc @cockroachdb/release
Release justification: Performance improvement that has baked in master for a while, that was originally identified in a support escalation.
Previously, we'd only create one sstable for all mvcc keys in a range when ingesting a rebalance/recovery snapshot into Pebble. This increased write-amp in Pebble as more sstables would have to be compacted into it (or the sstable then split into smaller ones in Pebble), and had other consequences such as massive filter blocks in the large singular sstable.
This change adds a new cluster setting,
kv.snapshot_rebalance.max_sst_size, that sets the max size of the sstables containing user/mvcc keys in a range. If an sstable exceeds this size in multiSSTWriter, we roll over that sstable and create a new one.
Epic: CRDB-8471
Fixes: #67284
Release note (performance improvement): Reduce the write-amplification impact of rebalances by splitting snapshot sstable files into smaller ones before ingesting them into Pebble.