Перейти к основному содержимому

Перспективные возможности для 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, чтобы не уходить в агрессивный режим до попыток предотвратить зацикливание обычным образом.