Cookbook > Subgraph Best Practice 1: Pruning with indexerHints

Boas Práticas de Subgraph 1 - Acelerar Queries com Pruning

Reading time: 2 min

TLDR

Link para esta seção

O pruning retira entidades de arquivo do banco de dados de um subgraph até um bloco especificado; e retirar entidades não usadas do banco de dados de um subgraph tende a melhorar muito o desempenho de queries de um subgraph. Usar o indexerHints é uma maneira fácil de fazer o pruning de um subgraph.

Como Fazer Pruning de um Subgraph com indexerHints

Link para esta seção

Adicione uma secção chamada indexerHints ao manifest.

O indexerHints tem três opções de prune:

  • prune: auto: Guarda o histórico mínimo necessário, conforme configurado pelo Indexador, para otimizar o desempenho dos queries. Esta é a configuração geralmente recomendada e é padrão para todos os subgraphs criados pela graph-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: Nenhum pruning de dados históricos; guarda o histórico completo e é o padrão caso não haja uma secção indexerHints. O prune: never deve ser selecionado caso queira Queries de Viagem no Tempo.

Podemos adicionar indexerHints aos nossos subgraphs ao atualizar o nosso subgraph.yaml:

specVersion: 1.0.0
schema:
file: ./schema.graphql
indexerHints:
prune: auto
dataSources:
- kind: ethereum/contract
name: Contract
network: mainnet

Considerações Importantes

Link para esta seção
  • 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, use indexerHints: 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 o prune: 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).

O pruning com indexerHints é uma boa prática para o desenvolvimento de subgraphs que oferece melhorias significativas no desempenho de queries.

Editar página

Anterior
Subgraphs movidos por substreams
Próximo
Subgraph Best Practice 2: Manage Arrays with @derivedFrom
Editar página