2 minutos
Boas Práticas de Subgraph 1 - Acelerar Queries com Pruning
TLDR
Pruning removes archival entities from the Subgraph’s database up to a given block, and removing unused entities from a Subgraph’s database will improve a Subgraph’s query performance, often dramatically. Using indexerHints
is an easy way to prune a Subgraph.
Como Fazer Pruning de um Subgraph com indexerHints
Adicione uma secção chamada indexerHints
ao manifest.
O indexerHints
tem três opções de prune
:
prune: auto
: Retains the minimum necessary history as set by the Indexer, optimizing query performance. This is the generally recommended setting and is the default for all Subgraphs created bygraph-cli
>= 0.66.0.prune: <Number of blocks to retain>
: Determina um limite personalizado no número de blocos históricos a serem retidos.prune: never
: Não será feito pruning de dados históricos; guarda o histórico completo, e é o padrão caso não haja uma secçãoindexerHints
.prune: never
deve ser selecionado caso queira Queries de Viagem no Tempo.
We can add indexerHints
to our Subgraphs by updating our subgraph.yaml
:
1specVersion: 1.3.02schema:3 file: ./schema.graphql4indexerHints:5 prune: auto6dataSources:7 - kind: ethereum/contract8 name: Contract9 network: mainnet
Considerações Importantes
-
Se quiser fazer Queries de Viagem no Tempo junto com pruning, o pruning deve ser realizado com precisão para manter a funcionalidade das Queries de Viagem no Tempo. Portanto, não recomendamos usar
indexerHints: prune: auto
com Queries de Viagem no Tempo. Em vez disto, useindexerHints: prune: <Number of blocks to retain>
para fazer um pruning preciso até uma altura de bloco que preserve os dados históricos requeridos por Queries de Viagem no Tempo, ou use oprune: never
para manter todos os dados. -
Não é possível criar enxertos a uma altura de bloco que já tenha passado por pruning. Se enxertos forem realizados com frequência e o pruning for desejado, recomendamos usar
indexerHints: prune: <Number of blocks to retain>
que guardarão com precisão um número determinado de blocos (por ex., o suficiente para seis meses).
Conclusão
Pruning using indexerHints
is a best practice for Subgraph development, offering significant query performance improvements.