PostgreSQL 9: Apakah menyedot debu meja pada replikasi primer di cermin?


18

Menjalankan PostgreSQL 9.0.1, dengan replikasi streaming menjaga satu instance mirror read-only tetap terbaru. Auto-vaccuum aktif, kecuali untuk beberapa tabel yang tidak disedot oleh daemon vakum otomatis, dalam upaya mengurangi IO jam bisnis. Tabel-tabel ini adalah "pandangan terwujud".

Setiap malam tengah malam, kami menjalankan vakum di seluruh database untuk membersihkan tabel-tabel yang dikecualikan dari vakum otomatis. Saya bertanya-tanya apakah proses itu mereplikasi menyeberang ke cermin, atau apakah saya perlu mengatur ruang hampa di cermin juga?


1
Pertanyaan yang sangat bagus Replikasi streaming menggunakan Write-Ahead Log, jadi intinya adalah apakah perubahan yang dilakukan VACUUM dicatat atau tidak.
DerfK

1
Menariknya, saya memiliki vakum otomatis AKTIF di cermin read-only, tetapi melihat statistik tabel itu tampaknya tidak pernah berjalan; karena semua tabel mencantumkan 0 tupel hidup / mati, dan tidak ada riwayat vakuum atau analisis yang terlihat.
Scott Herbert

developer.postgresql.org/pgdocs/postgres/hot-standby.html - 25.5.2. Menangani konflik kueri - "Aplikasi catatan pembersihan vakum dari WAL bertentangan dengan transaksi siaga yang snapshots-nya masih bisa" melihat "baris mana saja yang akan dihapus ............. Ini sepertinya menunjukkan bahwa VACUUM WAL login, dan oleh karena itu "ya" untuk pertanyaan saya. Akan sangat senang mendapatkan info lebih lanjut dari guru PG!
Scott Herbert

Data dari tampilan dinamis diharapkan berbeda pada data primer vs siaga. Pandangan ini menggunakan fungsi sistem untuk mengumpulkan data, dan fungsi tersebut membaca data dari struktur data dalam memori daripada dari tabel fisik. Misalnya, melakukan ANALYZE pada primer akan memperbarui statistik optimizer (digunakan untuk perencanaan permintaan) pada siaga juga, tetapi waktu ANALYZE dilakukan pada tabel tidak akan tercermin dalam pg_stat_user_tables karena informasi tersebut tidak masuk dalam transaksi log.
Gurjeet Singh

Jadi kesimpulannya adalah bahwa AUTOVACUUM yang terjadi pada master tidak berpengaruh padanya berjalan di slave, benar? Dengan asumsi inilah masalahnya, jika saya memiliki tabel yang tidak memiliki pembaruan / penghapusan, hanya menyisipkan, apakah mungkin untuk menonaktifkan autovacuum di master, karena saya hanya menulis ke sana, dan pembacaan terjadi pada budak.
Henley Chiu

Jawaban:


16

Vakum dan replikasi autovacuum seperti operasi tulis lainnya. (Yah, mereka jelas agak khusus secara internal, tetapi sejauh pertanyaan Anda, mereka adalah operasi menulis normal.) Menjalankan vakum atau autovacuum pada budak tidak melakukan apa-apa dan tidak perlu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.