PostgreSQL ВАКУУМ (ПОЛНЫЙ, АНАЛИЗ, ВЕРЬМО) Продолжительность 1.6Т Таблица - PullRequest
0 голосов
/ 02 мая 2020

У нас большая таблица (1.6T) и удалено 60% записей, и мы хотим освободить это пространство для ОС и файловой системы. Мы запускаем PostgreSQL 9.4 (мы застряли на этом в ожидании серьезного обновления программного обеспечения).

Нам нужно это пространство, так как мы сократили до 100 ГБ и когда обновляются материализованные представления, мы запускаем Недостаточно места на сервере.

Я попытался запустить VACUUM(FULL, ANALYZE, VERBOSE) schema.tablename и позволить ему работать в течение 24 часов на прошлых выходных, но пришлось отменить его, чтобы вернуть сервер в рабочее состояние.

Я запустить его снова в эти выходные, после удаления индексов (я надеюсь, что это ускорит его, поэтому он будет завершен sh). Пока что нет ни выхода, ни признаков прогресса. Я создал табличное пространство в другом массиве SSD и установил его как временное пространство, используя temp_tablespaces = 'name_of_other_tablespaces', но du -chs показывает, что оно все еще пусто.

Запрос показывает active, но поскольку использование диска не увеличивая его, вы чувствуете, что просто сидите, не шумите и притворяетесь, что его нет.

Это на сервере с 512 ГБ ОЗУ и массивом RAID 10 очень быстрых корпоративных твердотельных накопителей. Есть ли способ добиться прогресса и узнать, что что-то на самом деле происходит и что это работает? Какие-нибудь предположения относительно продолжительности или другие предложения?

1 Ответ

0 голосов
/ 02 мая 2020

Я узнал, что происходит, наконец, заметив, что ожидание процесса автовакуума до конца sh, что никогда не происходило (autovacuum: VACUUM pg_toast.pg_toast_nnnnn (to prevent wraparound)). После того, как я убил, VACUUM работал довольно быстро и очистил более 1 ТБ пространства. Время праздновать!

...