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.
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;