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.
THIS IS A DRAFT. DO NOT MERGE.
Currently, during initial sync, when a block is added to the database, all transactions are also inserted in a single query. This leads to very high memory usage on the Postgres end for larger blocks.
This PR allows chunking of the SQL
INSERT
queries into smaller queries so that Chaingraph can be synced on memory-constrained devices/servers. This can be done by setting theCHAINGRAPH_POSTGRES_INSERT_CHUNK_SIZE_MB
env var (on an 8GB device, I used 1MB successfully). On this PR, it defaults to 32MB - but probably should be made optional in future.NOTE: This HAS NOT been properly tested. While syncing appears to have worked for me, I have not validated that all data has been inserted correctly. I'm putting this PR here now in case someone else is trying to do similar and is bumping into memory issues (and wants to take the gamble in trying this PR). Though I intend to complete this PR eventually, if someone else wants to take over, please do!