Глава 31. Настройка горизонта транзакций

Хотя в Postgres Pro AXE есть собственные снимки, снимки Postgres Pro всё равно используются — даже для аналитических запросов, которые читают только OLAP-данные из Parquet-файлов, что удерживает горизонт транзакций. В результате VACUUM не может удалять мёртвые кортежи из таблиц-куч. Со временем это приводит к раздуванию таблицы и снижению производительности.

Чтобы горизонт транзакций не удерживался, Postgres Pro AXE использует параметр конфигурации axe.use_postgres_snapshot. По умолчанию для этого параметра задано значение true и снимки Postgres Pro используются для каждого запроса. Если для параметра указано значение false, любой запрос, который работает с таблицами-кучами, завершается с ошибкой. Это гарантирует, что успешно выполняются только те запросы, которые не работают с таблицами-кучами, и снимки Postgres Pro при этом не используются.

Важно

Если для параметра конфигурации axe.use_postgres_snapshot указано значение false, все запросы, включая аналитические, завершаются с ошибкой:

  • Запросы выполняются в блоках транзакций с уровнем изоляции READ COMMITTED.

  • Запросы выполняются в режиме autocommit, который явно оборачивает каждый оператор в транзакции без явных команд BEGIN и COMMIT.

Эти условия гарантируют, что запросы можно безопасно выполнить без использования снимков Postgres Pro и удержания горизонта транзакций.

Значение параметра конфигурации axe.use_postgres_snapshot можно установить для текущего сеанса или глобально:

  -- Для текущего сеанса:
  SET axe.use_postgres_snapshot TO false;

  -- Глобально:
  ALTER SYSTEM SET axe.use_postgres_snapshot TO false;