9
Настройка заморозки
Параметры для мультитранзакций
vacuum_multixact_freeze_min_age = 5 000 000
vacuum_multixact_freeze_table_age = 150 000 000
autovacuum_multixact_freeze_max_age = 400 000 000
Параметры хранения таблиц
autovacuum_multixact_freeze_min_age
toast.autovacuum_multixact_freeze_min_age
autovacuum_multixact_freeze_table_age
toast.autovacuum_multixact_freeze_table_age
autovacuum_multixact_freeze_max_age
toast.autovacuum_multixact_freeze_max_age
Поскольку для мультитранзакций выделяются отдельные номера,
которые записываются в поле xmax версий строк, из-за ограничения
разрядности счетчика с ними возникают такие же сложности, как и
с обычным номером транзакции. Речь идет о проблеме переполнения
(xid wraparound), которая рассматривалась в теме «Заморозка» модуля
«Многоверсионность».
Поэтому для номеров мультитранзакций тоже необходимо выполнять
аналог заморозки — старые номера multixact id заменяются на новые
(или на обычный номер, если в текущий момент блокировка уже
удерживается только одной транзакцией).
Заметим, что обычная заморозка версий строк выполняется для поля
xmin (если у версии строки непустое поле xmax, то либо это уже
неактуальная версия и она будет очищена, либо транзакция xmax
отменена и ее номер нас не интересует). А для мультитранзакций речь
идет о поле xmax актуальной версии строки, которая может оставаться
актуальной, но при этом постоянно блокироваться разными
транзакциями в разделяемом режиме.
За заморозку мультитранзакций отвечают параметры, аналогичные
параметрам обычной заморозки.