services/horizon: Improve /accounts/{id}/transactions|payments|operations performance #2946
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.
PR Checklist
PR Structure
otherwise).
services/friendbot
, orall
ordoc
if the changes are broad or impact manypackages.
Thoroughness
.md
files, etc... affected by this change). Take a look in the
docs
folder for a given service,like this one.
Release planning
needed with deprecations, added features, breaking changes, and DB schema changes.
semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.
What
This commit improves the performance of
/accounts/{id}/transactions|payments|operations
endpoints by denormalizinghistory_operation_participants
andhistory_transaction_participants
. The feature is behind a feature flag because to work correctly a new set of indexes and full history reingestion are required.Why
As explained in #1808 the set of queries made by "Transactions/Operations/Payments For Account" endpoints require denormalization of
history_operation_participants
andhistory_transaction_participants
tables to include information about a transaction status (successful
) and operation type (payment
). This makes queries related to accounts with unusual operation distributions (ex. an account with a lot of offer operations but a few payment operations) fast.Known limitations