Перспективные возможности для Pangolin 6.0+ (ядро 15+)
Команда COPY FREEZE
Запрашивает копирование данных с уже замороженными строками – так, как будто после выполнения COPY
сразу была выполнена команда VACUUM FREEZE
. При начальном добавлении данных исключается повторный просмотр таблицы, снимается нагрузка с автоочистки. Строки могут быть заморожены при условиях:
- Загружаемая таблица была создана или опустошена в текущей подтранзакции.
- По ней нет открытых курсоров.
- В данной транзакции нет других снимков.
- Таблица не является секционированной.
Новая аномалия MVCC: соседние сессии увидят все загруженные COPY FREEZE
данные немедленно после успешной загрузки, вне зависимости от момента принятия или отмены транзакции. Действительно, признак заморозки - указание принять запись как видимую вне зависимости от номера открывшей ее транзакции.
Такое поведение отличается от ожидаемого, придется учесть его при разработке приложений.
Агрессивная автоочистка для предотвращения зацикливания счетчиков
Новый параметр vacuum_failsafe_age
(integer
) задает порог возраста relfrozenxid
для таблицы, при достижении которого механизм автоочистки для предотвращения зацикливания счетчиков выключает паузы «вежливого» режима и пропускает не обязательные для заморозки блоки алгоритма VACUUM
(например, очистку индекса).
По умолчанию составляет 1.6 миллиарда транзакций. Допустимы значения от нуля до 2.1 миллиарда, но эффективное ограничение снизу – минимум 105% от autovacuum_freeze_max_age
, чтобы не уходить в агрессивный режим до попыток предотвратить зацикливание обычным образом.