Глава 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;