Skip to main content

Postgres add-on

info

Postgres instances provisioned by SQD Cloud only have basic functionality by default. Do not use them to store data that can't be recovered via an indexer resync. Use zero-downtime updates to avoid sync-related downtimes.

Advanced capabilities such as snapshots, replication, high-availability setup, increased number of direct connections etc are avialable on Enterprise plans. If you're interested please let us know.

To provision a Postgres instance, add the addons.postgres: section to the deployment manifest. The add-on deploys a Postgres instance and injects variables with database connection params into the environment of the api and processor squid services.

Variable shadowing

Any of the following variables set globally or for api or processor squid services in the manifest will be overwritten with Cloud-supplied values:

  • DB_SSL
  • DB_HOST
  • DB_PORT
  • DB_NAME
  • DB_USER
  • DB_PASS
  • DB_URL

Config options

The addon supports additional PG config options:

NameDescriptionTypeDefault valueOptional
config.statement_timeoutMax execution time after which any query is forcefully aborted, msnumber60000Optional
config. log_min_duration_statementLog queries executing longer than the given threshold, msnumber5000Optional
config. max_pred_locks_per_transactionSee Lock Managementnumber64Optional
config.max_locks_per_transactionSee Lock Managementnumber64Optional

Direct access

SQD Cloud enables direct read access to the deployed PG instances. Go to the "DB access" tab of your squid deployment's card in the Cloud web app to get the PG connection string.

info

Outside of Enterprise plans, the number of direct connections one can open to the database is capped for optimal performance. Please avoid using more than ten (10) connections in your setups.

Scaling

The postgres add-on supports storage and compute resource scaling by extending the scale.addons.postgres section of the deploy manifest. The following options are supported

NameDescriptionTypeDefault valueOptional
storageVolume size for the postgres containermemory resource units10GOptional
profileAllocated resources profilesmall | medium | large | xlarge | 2xlargesmallOptional

The profile specifications for a postgres service are as follows:

Profilecolocated vCPU (max)colocated RAM (max)dedicated vCPU (requested)dedicated RAM (max)
small0.2768Mi12Gi
medium0.51.5Gi24Gi
large13Gi44Gi
xlarge--816Gi
2xlarge--1632Gi

Examples

manifest_version: subsquid.io/v0.1
name: sample-squid
version: 1
description: |-
My advanced squid

build:

deploy:
addons:
postgres:
config:
statement_timeout: 100000
log_min_duration_statement: 100000
processor:
cmd: [ "sqd", "process:prod" ]
api:
cmd: [ "sqd", "serve:prod" ]

scale:
addons:
postgres:
storage: 100G
profile: medium