rework secondary index generation #959
Merged
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.
Problem
stop mmapping storage files.
We cannot iterate and return
StoredAccountMeta
for many accounts anymore. The loop for secondary index generation doesn't easily support reworking.Summary of Changes
Always generate the primary index the same way, using
scan_index
. Then, if we're building secondary indexes, update the secondary index usingscan_accounts
. By far the largest cost of secondary indexes is the generation step. We were already calling this update once per account. We are scanning the entire storage a second time, but the performance is dominated by the secondary index generation so this should be negligible.Fixes #