2 मिनट
सबग्राफ बेस्ट प्रैक्टिस 1 - सबग्राफ प्रूनिंग के साथ क्वेरी की गति में सुधार करें
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.
IndexerHints के साथ subgraph को prune करने का तरीका
Manifest में एक section को indexerHints के नाम से जोड़ें।
indexerHints में तीन 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>
: ऐतिहासिक ब्लॉकों को बनाए रखने की संख्या पर एक कस्टम सीमा निर्धारित करता है।prune: never
: ऐतिहासिक डेटा को कभी भी नहीं हटाया जाता; यह संपूर्ण इतिहास को बनाए रखता है और यदिindexerHints
अनुभाग नहीं है तो यह डिफ़ॉल्ट होता है। यदि Time Travel Queries आवश्यक हैं तोprune: never
का चयन किया जाना चाहिए।
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
महत्वपूर्ण विचार
-
यदि Time Travel Queries की आवश्यकता हो और साथ ही pruning भी करनी हो, तो Time Travel Query की कार्यक्षमता बनाए रखने के लिए pruning को सटीक रूप से करना आवश्यक है। इसी कारण, आमतौर पर Time Travel Queries के साथ
indexerHints: prune: auto
का उपयोग करने की अनुशंसा नहीं की जाती है। इसके बजाय,indexerHints: prune: <Number of blocks to retain>
का उपयोग करें ताकि उस ब्लॉक ऊँचाई तक सटीक रूप से pruning हो सके, जो Time Travel Queries के लिए आवश्यक ऐतिहासिक डेटा को सुरक्षित रखे, या फिरprune: never
का उपयोग करें ताकि सभी डेटा सुरक्षित रहे। -
यह संभव नहीं है कि किसी ब्लॉक ऊंचाई पर graft किया जाए जो कि हटा दिया गया हो। यदि grafting नियमित रूप से की जाती है और हटाने की आवश्यकता होती है, तो यह अनुशंसित है कि
indexerHints: prune: <Number of blocks to retain>
का उपयोग करें, जो सटीक रूप से एक निर्धारित संख्या में ब्लॉक बनाए रखेगा (उदाहरण के लिए, छह महीनों के लिए पर्याप्त)।
निष्कर्ष
Pruning using indexerHints
is a best practice for Subgraph development, offering significant query performance improvements.