Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(DB): Chunk SQL Inserts #68

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jimtendo
Copy link

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 the CHAINGRAPH_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!

Signed-off-by: James Zuccon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant