Chapter 31. Configuring the Transaction Horizon

Although Postgres Pro AXE has its own snapshots, Postgres Pro snapshots are still used even for analytical queries that read only the OLAP data from Parquet files holding the transaction horizon. As a result, VACUUM cannot delete dead tuples from heap tables, which over time leads to table bloat and performance degradation.

To avoid holding the transaction horizon, Postgres Pro AXE provides the axe.use_postgres_snapshot configuration parameter. By default, the parameter is set to true, and a Postgres Pro snapshot is used for each query. When the parameter is set to false, any query that works with heap tables fails with an error. This ensures that only queries that do not work with heap tables succeed, and Postgres Pro snapshots are not used.

Important

With the axe.use_postgres_snapshot configuration parameter set to false, all queries, including analytical queries, fail with an error if none of the following conditions are met:

  • Queries are executed in transaction blocks with the READ COMMITTED isolation level.

  • Queries are executed in the autocommit mode, which implicitly wraps each statement in a transaction without explicit BEGIN and COMMIT commands.

These conditions ensure that queries can be safely executed without using Postgres Pro snapshots and holding the transaction horizon.

You can set the axe.use_postgres_snapshot configuration parameter for the current session or globally:

  -- For the current session:
  SET axe.use_postgres_snapshot TO false;

  -- Globally:
  ALTER SYSTEM SET axe.use_postgres_snapshot TO false;