論理レプリケーションを使用していないと仮定すると...
低レベルのレプリケーションが他の低レベルの操作とどのように相互作用するかはよく分かりません。真空そして分析する。
レプリカがプライマリ サーバーのブロック レベルのコピーになる傾向があり、プライマリ サーバーでバキュームによって行われた変更がレプリカに複製されるのかどうかはわかりません。または、レプリカが自己メンテナンスをより担うかどうか。
背景
当社には、年間約 2 TB 増加している RDS インスタンスがあります。今日、既存のクエリの一部が非常に遅く実行されていることに気付きました。
非常に一貫して増大する非常に大きなテーブルに対するクエリに突然の変更が発生した場合、私の最初の行動はコードの変更を確認することであり、次にテーブルの統計を確認することです。
しかし、これは真空/分析に関して私の知識にギャップがあることを示しています。
答え1
PostgreSQL 用 Amazon RDS用途PostgreSQLの組み込みストリーミングレプリケーション。
本質的には、これはサーバー全体の低レベルのレプリケーションであり、物理レプリケーションとも呼ばれます。はい、これはある種のブロックレベルのレプリケーションと考えることができます。
しかし、ストリーミング レプリケーションは実際にはブロックをレプリケートするわけではありません。プライマリから WAL データ (REDO レコード) を継続的に送信し、レプリカに再生することで機能します。
バキューム操作は WAL に記録され、レプリカ サーバー上で再生されます。
分析操作の場合、結果の統計はシステム テーブルとに書き込まれますpg_class
。pg_statistic
これらのテーブルの更新は WAL に記録され、レプリカに再生されます。