Precompute runtime account stats (total_sent, total_received) #618
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.
@lukaw3d noticed that a query to the runtime accounts endpoint for the fee accumulator address (https://nexus.oasis.io/v1/sapphire/accounts/oasis1qp3r8hgsnphajmfzfuaa8fhjag7e0yt35cjxq0u4) was timing out. Further investigation showed that the db operation to calculate the account statistics for
total_sent
andtotal_received
were timing out because they were calculated on the fly and the fee accumulator account was involved in ~30% of all transfers. The query optimizer was therefore doing a full table scan onchain.runtime_transfers
instead of using the existing (flawed) index.This PR includes changes to dead-reckon the
total_sent
andtotal_received
amounts in thechain.runtime_accounts
table. It also fixes the existing indexes on thechain.runtime_transfers
table.