先行書き込みログについて説明する
INSERTS や DELETES などの変更がデータベースで行われると、それらの変更は最初にログに書き込まれ、次にディスク上のデータ ファイルにのみ書き込まれます。 変更はデータ ファイルにコミットする前にログに書き込まれるため、この操作は先書きログと呼ばれます。 電源の喪失などの問題が発生した場合、ログは常に最新のデータを保持し、データベースが一貫した状態であることを確認するために使用できます。
2 つ目の利点は、最初にログに変更を書き込むことで、テーブルとインデックスへの変更を個別に書き込むのではなく、バッチで書き込むことができるということです。 このプロセスにより、テーブルとインデックスを最新の状態に保つために必要なディスク書き込みの数が減ります。 ログへの書き込みは順番に行われるため、高速です。 すべてのデータをログから復旧できるため、テーブルとインデックスへの書き込み速度が遅い場合は、バッチで安全に実行できます。 通常、多数の小さな更新プログラムが含まれるワークロードでは、パフォーマンスが向上します。
手記
PostgreSQL のオンプレミス実装の場合、ログ ファイルは pg_wal ディレクトリに格納されます。 Azure Database for PostgreSQL ではファイル システムへのアクセスが提供されないため、ログ ファイルの物理ストレージについて心配する必要はありません。
先書きログの動作を制御し、ワークロードに合わせて最適化できるサーバー パラメーターがいくつかあります。
- commit_delay - トランザクションのコミットとログのディスクへのフラッシュの間の遅延。
- wal_buffers - 先書きログ記録 (WAL) 用の共有メモリ内のディスク ページ バッファーの数。
- max_wal_size - 自動チェックポイントをトリガーする前に WAL を拡張するための最大サイズ。
- wal_writer_delay - WAL ライターによって実行される WAL フラッシュ間の時間間隔。
- wal_compression - WAL ファイル内の全ページ書き込みが圧縮されるかどうか。
- wal_level - WAL に書き込まれる情報の量を決定します。 使用できる値は REPLICA または LOGICAL です。
ポイントインタイム リストア
先書きログ (WAL) の主な目的は、クラッシュが発生した場合にデータベースの一貫性と持続性を確保することです。 オンプレミス バージョンの PostgreSQL では、ログをアーカイブとして使用できるため、構成設定の archive_mode と archive_commandを使用して特定の時点に復元できます。
Azure Database for PostgreSQL は、基になるファイル システムへのアクセスを許可しないマネージド サービスです。 ただし、すべてのデータベースを含むサーバーの自動完全バックアップが含まれます。 このバックアップを使用すると、ある時点までデータを再作成できます。 バックアップは自動的にスケジュールされ、1 日に 1 回実行されます。 復元する必要がある場合は、バックアップの保持に指定した日数 (最大 35 日間) まで復元できます。 バックアップを保持する期間を指定するには:
- Azure portal で、Azure Database for PostgreSQL フレキシブル サーバーに移動します。
- [の概要] セクションで、構成を選択します。
- [バックアップ] で、バックアップの保有期間 (日数)を見つけます。 スライダー バーでは、バックアップを保持する日数を選択できます。
- を選択して、変更を保持するには[ 保存]を選択します。