-
Notifications
You must be signed in to change notification settings - Fork 121
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
0. change(db): Use Ribbon filters for database index lookups #4040
Merged
Conversation
This file contains 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
3 tasks
Ribbon filters are like Bloom filters, but more efficient.
715f868
to
95d8c67
Compare
teor2345
commented
Apr 5, 2022
This was referenced Apr 5, 2022
conradoplg
approved these changes
Apr 6, 2022
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.
Looks good! I'm wondering why 9.9 was chosen, but I'll go ahead with this to unblock the rest
19 tasks
macOS timed out fetching the Zcash parameters |
@Mergifyio refresh |
✅ Pull request refreshed |
19 tasks
19 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
A-state
Area: State / database changes
C-enhancement
Category: This is an improvement
lightwalletd
any work associated with lightwalletd
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.
Motivation
Using Ribbon filters for index lookups makes it about 7% faster. (Ribbon filters are like bloom filters.)
Specifications
RocksDB can do lookups using a Ribbon filter, which can improve read performance:
https://docs.rs/rocksdb/latest/rocksdb/struct.BlockBasedOptions.html#method.set_ribbon_filter
See also:
https://zhangyuchi.gitbooks.io/rocksdbbook/content/RocksDB-Tuning-Guide.html
Solution
This change doesn't require a database version increment, but it won't have the full performance impact until the database is rebuilt. (I tested locally, and the cached state test should also check this.)
Performance
I ran a full sync test to check performance:
It finished in 5h43m, compared with most syncs that are around 97% - 99% at 6h.
That's around 7% faster.
(The test was after the lightwalletd database changes, but it should also be faster before them.)
Review
Anyone can review this PR.
I'd like to merge this PR before we merge any more database changes, to make merging them faster.
Reviewer Checklist
Follow Up Tasks
Try a database format upgrade with these changes: