любой из опубликованных таблиц неимоверно возрастает задержка и размер вал журнала и не сбрасывается до окончания транзакции внутри которой выполняется VACUUM FULL, чем это повидение может быть обусловлено? Была гипотеза что Postgres создает swp таблицу во время выполнения этой операции, а потом переименовывает её, НО в PG_CLASS в момент вакуума пусто (такого объекта нет, имею ввиду) и строки в PG_CLASS относящиеся к вакумируемой таблицы не как не меняются до завершения этой транзакции
Ваша таблица полностью пересоздаётся. Со всеми накладными расходами на WAL, блокировки и прочее. Наверное, она очень большая.
Это понятно, почему эти изменения отражаются публикуются в слот логической репликации?
Такое повидение было бы нормальным для потоковой репликации, потому что там ходят физические дисковые блоки. В логической репликации ходят строки, а они как раз и не меняются во время VACUUM FULL, меняется лишь их расположения в файловом пространстве, строки остаются теми же самыми
Не специалист по репликации, но уверен, что вот это ваше представление о ней неправильное.
Логическая репликация построена по схеме, подобной физической потоковой репликации (см. Подраздел 26.2.5). Она реализуется процессами «walsender» (передачи WAL) и «apply» (применения). Процесс walsender запускает логическое декодирование (описанное в Главе 48) WAL и загружает стандартный модуль логического декодирования (pgoutput). Этот модуль преобразует изменения, считываемые из WAL, в протокол логической репликации (см. Раздел 52.5) и отфильтровывает данные согласно спецификации публикации. Затем данные последовательно передаются по протоколу логической репликации рабочему процессу применения изменений, который сопоставляет данные с логическими таблицами и применяет отдельные изменения по мере их поступления, сохраняя транзакционный порядок.
Обсуждают сегодня