Привет! Постгрес 11, вчера на одной из таблиц запустился AUTOVACUUM (to prevent wraparound). При этом таблица была недоступна.
Из доки, вроде как, понял, что таблица блокируется для DML только при VACUUM FULL.
Т.е., по-идее она должна была быть доступна для DML.
Но если кто-то пульнул бы DDL, то этот DDL встал бы в ожидание завершения AUTOVACUUM, заодно ставя все DML после себя в очередь.
Я всё правильно понимаю? А то протестить сложновато - надо как-то спровоцировать этот prevent wraparound VACUUM
> При этом таблица была недоступна.
А не должна была (для DML). Т.е. что-то точно не так.
> Т.е., по-идее она должна была быть доступна для DML.
Да.
> Но если кто-то пульнул бы DDL, то этот DDL встал бы в ожидание завершения AUTOVACUUM
Да. Но всё это очень легко увидеть (и решить) с помощью pg_locks / pg_stat_activity.
> Я всё правильно понимаю?
Да.
> надо как-то спровоцировать этот prevent wraparound VACUUM
Это стоит делать только на тестовом кластере, на всякий случай. Путём быстрого "накручивания" xid (я уверен, что даже видел для этого готовые запросы / функции — поищите, если нужно).