PostgreSQL 9: Чи вакуумує таблиця за первинною копією на дзеркалі?


18

Запуск PostgreSQL 9.0.1 з потоковою реплікацією, що підтримує актуальність одного екземпляра дзеркала. Авто-вакуум увімкнено на первинному, за винятком декількох таблиць, які не вакуумуються демоном для автоматичного вакуумування, намагаючись зменшити введення робочої години. Ці таблиці - це "матеріалізовані погляди".

Щовечора опівночі ми проводимо вакуум по всій базі даних, щоб очистити ті таблиці, які виключені з автоматичного вакуумування. Мені цікаво, чи цей процес повторюється на дзеркало, чи потрібно також встановити вакуум на дзеркалі?


1
Відмінне запитання. У потоковій реплікації використовується протокол запису вперед, тому воно зводиться до того, чи внесені зміни VACUUM вносяться чи ні.
ДерфК

1
Цікаво, що у мене ввімкнено автоматичний вакуум на дзеркалі лише для читання, але, дивлячись на статистику таблиці, воно, здається, ніколи не працювало; так як у всіх таблицях перелічено 0 живих / мертвих кортежів, а вакуумів чи аналізів не видно.
Скотт Герберт

developer.postgresql.org/pgdocs/postgres/hot-standby.html - 25.5.2. Поводження з конфліктами запитів - "Застосування запису вакуумного очищення від конфліктів WAL з транзакціями в режимі очікування, знімки яких все ще можуть" побачити "будь-який з рядків, які потрібно видалити ............. Це, здається, говорить про те, що VACUUM WAL зареєстровано, і тому це питання "так" на моє запитання. Хочеться отримати більше інформації від гуру PG!
Скотт Герберт

Очікується, що дані динамічних представлень будуть різними в первинному порівнянні з режимом очікування. Ці представлення використовують системні функції для збору даних, і ці функції читають дані з структур даних в пам'яті, а не з фізичної таблиці. Наприклад, виконання ANALYZE на первинному оновить статистику оптимізатора (використовується для планування запитів) і в режимі очікування, але час, який ANALYZE виконується в таблиці, не відображатиметься в pg_stat_user_tables, оскільки ця інформація не входить в транзакцію колоди.
Gurjeet Singh

Отже, висновок такий: AUTOVACUUM, що виникає на майстра, не впливає на нього, що працює на рабі, правда? Якщо припустити, що це так, якщо у мене є таблиця, яка не містить оновлень / видалень, а лише вставок, було б доцільно відключити автовакуум у майстрі, оскільки я просто пишу до нього, і читання відбувається на підлеглому.
Henley Chiu

Відповіді:


16

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.