Я создал дамп базы данных, используя pg_dump в "настраиваемом" формате (-Fc). Этот формат позволяет вызвать pg_restore с опцией "jobs" (-j8). Параметры заданий запускают 8 процессов и восстанавливают подавляющее большинство отношений в моей базе данных в течение 10 минут.
У меня осталось 4 процесса. Одним из них является обновление материализованного представления, а остальные 3 - индексы, которые будут применяться к 3 таблицам, которые материализованное представление использует в качестве источников данных. Индексы "ждут" в соответствии с pg_stat_activity, предположительно потому, что REFRESH
материализованного представления все еще обращается к исходным таблицам.
Когда индексы установлены, обновление представления занимает всего пару минут. Поскольку индексы не установлены во время REFRESH
, я отключил процесс REFRESH
на 17 часов, из-за чего pg_restore завершился с ошибкой.
Как я могу
- Настроить порядок элементов, чтобы индексы сначала создавались
- Отключите обновление материализованного представления и сделайте это вручную позже
- Манипулировать файл дампа в пользовательском формате, чтобы сказать "БЕЗ ДАННЫХ"
- Перехватите оператор
REFRESH MATERIALIZED VIEW
и выбросьте его в корзину
Или любое другое решение, которое выполняет свою работу?