-
Notifications
You must be signed in to change notification settings - Fork 6
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
feat(storage): separate storage databases experimentally #410
Conversation
Current dependencies on/for this PR: This comment was auto-generated by Graphite. |
Codecov ReportPatch coverage:
📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more Additional details and impacted files@@ Coverage Diff @@
## test_options #410 +/- ##
================================================
+ Coverage 63.60% 63.76% +0.16%
================================================
Files 131 131
Lines 17801 17918 +117
================================================
+ Hits 11322 11426 +104
- Misses 5937 5949 +12
- Partials 542 543 +1
... and 7 files with indirect coverage changes Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report in Codecov by Sentry. |
This PR implemented the idea of separating the storage database, which was proposed by @hungryjang. It divides storage databases into two parts: data database and commit database. The data part stores records whose keys are LLSNs and whose values are log data users append. The commit part stores records whose keys are GLSNs and whose values are LLSNs. This approach is very performant compared to the previous one. Especially the data part can take advantage of move compaction dramatically. Empirically throughput can be increased by about 10-20% and append duration reduced by about 10-20%. However, it doubles the number of pebble instances. We should configure the storage databases carefully to overcome this.
What this PR does
This PR implemented the idea of separating the storage database, which was proposed by @hungryjang.
It divides storage databases into two parts: data database and commit database. The data part
stores records whose keys are LLSNs and whose values are log data users append. The commit part
stores records whose keys are GLSNs and whose values are LLSNs.
This approach is very performant compared to the previous one. Especially the data part can take
advantage of move compaction dramatically. Empirically throughput can be increased by about 10-20%
and append duration reduced by about 10-20%.
However, it doubles the number of pebble instances. We should configure the storage databases
carefully to overcome this.