PostgreSQL 9: Вакуумирует ли таблица на первичном сервере репликацию на зеркало?

18

Запуск PostgreSQL 9.0.1 с потоковой репликацией, поддерживающей актуальность одного экземпляра зеркала только для чтения. Автопылесос включен на первичном устройстве, за исключением нескольких таблиц, которые не пылесосятся демоном автопылесоса, чтобы уменьшить количество операций ввода-вывода в рабочее время. Эти таблицы являются "материализованными представлениями".

Каждую ночь в полночь мы запускаем вакуум в базе данных, чтобы очистить те таблицы, которые исключены из автоматического вакуума. Мне интересно, повторяется ли этот процесс на зеркале, или мне нужно также настроить вакуум на зеркале?

Скотт Герберт
источник
1
Отличный вопрос. При потоковой репликации используется журнал Write-Ahead Log, поэтому он сводится к тому, регистрируются ли внесенные изменения VACUUM или нет.
DerfK
1
Интересно, что я включил авто-вакуум на зеркале только для чтения, но, глядя на статистику таблицы, он, кажется, никогда не работал; поскольку во всех таблицах перечислено 0 живых / мертвых кортежей, и истории вакуума или анализа не видно.
Скотт Герберт
developer.postgresql.org/pgdocs/postgres/hot-standby.html - 25.5.2. Обработка конфликтов запросов - «Применение записи очистки пылесоса из WAL конфликтует с резервными транзакциями, моментальные снимки которых все еще могут« видеть »любые строки, которые нужно удалить ............. Это, по-видимому, говорит о том, что VACUUM WAL зарегистрирован, и поэтому это "да" на мой вопрос. Хотелось бы получить больше информации от гуру PG, хотя!
Скотт Герберт
Ожидается, что данные из динамических представлений будут отличаться в основном и в режиме ожидания. Эти представления используют системные функции для сбора данных, и эти функции считывают данные из структур данных в памяти, а не из физической таблицы. Например, выполнение ANALYZE на первичном сервере также обновит статистику оптимизатора (используется для планирования запросов) в резервном режиме, но время, когда ANALYZE был выполнен для таблицы, не будет отражено в pg_stat_user_tables, так как эта информация не зарегистрирована в транзакции. журналы.
Гурджит Сингх
Итак, вывод состоит в том, что AUTOVACUUM, возникающий на ведущем устройстве, не влияет на его работу на ведомом устройстве, верно? Предполагая, что это так, если у меня есть таблица, в которой НЕТ обновлений / удалений, просто вставки, возможно ли отключить автовакуум в мастере, так как я просто пишу в него, и чтение происходит на ведомом устройстве.
Хенли Чиу

Ответы:

16

Вакуум и автовакуум копируются как любая другая операция записи. (Ну, они, очевидно, являются чем-то особенным внутри, но что касается вашего вопроса, это обычные операции записи.) Запуск вакуума или автовакуума на ведомом устройстве ничего не делает и не является необходимым.

Питер Айзентраут
источник