PostgreSQL 9:ミラー上のプライマリレプリケートのテーブルをバキュームしますか?


18

PostgreSQL 9.0.1を実行し、ストリーミングレプリケーションで1つの読み取り専用ミラーインスタンスを最新の状態に保ちます。業務時間のIOを削減するために、自動バキュームデーモンによってバキュームされないいくつかのテーブルを除き、自動バキュームがプライマリでオンになります。これらのテーブルは「マテリアライズドビュー」です。

毎晩真夜中に、自動バキュームから除外されたテーブルをクリーンアップするために、データベース全体にバキュームを実行します。そのプロセスがミラー全体に複製されるのか、それともミラーにも真空を設定する必要があるのか​​疑問に思っていますか?


1
素晴らしい質問です。ストリーミングレプリケーションは先行書き込みログを使用するため、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は、スレーブで実行されているAUTOVACUUMには影響しないということです、正しいですか?これが事実であると仮定すると、更新/削除がなく、挿入だけのテーブルがある場合、マスターで自動バキュームを無効にすることは可能ですが、書き込みと読み取りはスレーブで行われます。
ヘンリーチウ

回答:


16

バキュームおよびオートバキュームは、他の書き込み操作と同様に複製されます。(まあ、それらは明らかに内部的にいくらか特別ですが、あなたの質問に関する限り、それらは通常の書き込み操作です。)スレーブ上でバキュームまたはオートバキュームを実行することは何もせず、必要ありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.