Skip to main content

Available in arize-phoenix 14.0.0+

Phoenix now routes read-only queries to an optional PostgreSQL read replica when PHOENIX_SQL_DATABASE_READ_REPLICA_URL is set. This reduces CPU, I/O, and connection pool pressure on the primary database under high span ingestion load.

Configuration#

Set both environment variables before starting the server:

When PHOENIX_SQL_DATABASE_READ_REPLICA_URL is not set, Phoenix falls back to the primary for all queries — no configuration change is required for existing deployments.

What Routes to the Replica#

The following are routed to the read replica when configured:

  • Dataloaders — span and trace attribute lookups
  • GraphQL query resolvers — all read-only queries
  • REST read endpoints — spans, traces, and sessions
  • Generative model store daemon — periodic model list refresh

Writes (span ingestion, mutations, migrations) always go to the primary.

Notes#

  • PHOENIX_SQL_DATABASE_READ_REPLICA_URL is only supported for PostgreSQL. Setting it with a SQLite database logs a warning and is ignored.
  • The replica connection uses the same asyncpg driver as the primary.
  • Replication lag is not managed by Phoenix — reads may reflect slightly stale data depending on your PostgreSQL replication setup.