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 COMMITTEDisolation level.Queries are executed in the
autocommitmode, which implicitly wraps each statement in a transaction without explicitBEGINandCOMMITcommands.
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;