TOP書籍連動> postgresql.confの設定を見直そう
まるごと PostgreSQL!
PostgreSQLチューニング実践テクニック

第2回:postgresql.confによるチューニング(2)

著者:石井達夫(ISHII, Tatsuo)   2005/5/30
1   2  次のページ
postgresql.confの設定を見直そう

   前回に引き続き、postgresql.confの設定によるチューニングテクニックを紹介していきます。
wal_sync_method

   データをディスク装置に確実に書き込むために、PostgreSQLでは同期書き込みという方法を使っていますが、同期書き込みにはかなり時間がかかります。同期書き込みの方法はプラットフォームによっていくつか選択肢があり、一概にどれが最適とはいえないため、実際にベンチマークを計測して最適なものを選ぶとよいでしょう。ベンチマークの計測方法としては、contrib/pgbenchを使用するのが手頃です。

   次に、これらを使ったベンチマーク計測方法を示します。ベンチマーク用のデータベースは新たに作成することをお勧めします。ここでは「bench」という名前のデータベースを使用しています。

  1. ベンチマークデータベースの作成(createdb bench)
  2. ベンチマークデータベースの初期化(pgbench -i bench)
  3. wal_sync_methodを設定
  4. postmasterの再起動、出力されるTPS値を記録
  5. ベンチマークを実行(pgbench -c 10 -t 1000 bench)
  6. まだ試していないwal_sync_methodがあれば2.へ戻る

   これを繰り返し、一番TPS値が大きい書き込み方法を採用してください。なお、プラットフォームによってはサポートされていないwal_sync_methodがあるかもしれません。この場合、postmasterが起動しないので、それについてはあきらめて次のwal_sync_methodに進みます。


checkpoint_segments

   PostgreSQLでは、データベースへの更新記録は、WALログという特別なファイルに同期書き込みを使って行われます。その代わり、テーブルやインデックス本体への書き込みは、同期書き込みではなく、通常のバッファリングを使ったより効率的な方法を使います。コンピュータがクラッシュすると、テーブルやインデックスへの書き込みデータが失われる可能性がありますが、WALログの更新記録を使えばリカバリできるので問題ありません。

   しかし、WALログは放っておくと無制限に大きくなってしまうので、ときどき「チェックポイント(checkpoint)」処理を実行し、テーブルやインデックスへの更新を同期書き込みによって確定しておく必要があります。こうしておけば、コンピュータが異常停止しても、ディスクが破壊されない限りデータを失う心配がなくなります。同期書き込みによってデータを確定するとこれまでのWALログのデータが不要になるので、このタイミングでWALログを消去します。

   WALログは1個16Mバイトの「セグメントファイル」に分かれています。デフォルトでは、5分に一度、あるいはセグメントファイル数が3個を超えたときにチェックポイント処理が実行されます。通常は、このデフォルトの設定で問題ないのですが、大量の更新処理を実行すると、次のようなメッセージが表示されることがあります。

LOG: checkpoints are occurring too frequently (11 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".

   チェックポイントが頻発する(この例では、11秒間隔)ことについての警告が出されています。チェックポイントは同期書き込みを伴う比較的負荷の高い処理であり、あまりチェックポイントが頻発するとパフォーマンスが低下します。ディスク容量に十分余裕がある場合は、checkpoint_segmentsの値を増やしてチェックポイント頻度を低減するとよいでしょう。上記のメッセージが表示されるときは、checkpoint_segmentsの値を増やしてください。

1   2  次のページ

書籍紹介
まるごと PostgreSQL! Vol.1
まるごと PostgreSQL! Vol.1 日本での市場シェアNo.1(オープンソースRDBMS部門)データベースソフトPostgreSQLの最新情報を、開発メンバーを含む豪華執筆陣が多面的かつ詳細に解説します。PostgreSQL用クラスタリング/レプリケーションソフト、PostgreSQL⇔Oracle移行、PostgreSQLによる大規模サイト構築法、新バージョンPostgreSQL 8.0先行レビュー、PostgreSQL用.NETデータプロバイダ等々、他では読めない貴重な記事が満載です。

発売日:2004/12/08発売
定価:\1,890(本体 \1,800+税)
石井達夫
著者プロフィール
石井達夫(ISHII, Tatsuo)
PostgreSQLの開発者、エバンジェリスト。本業でもPostgreSQLによるビジネスに関わっている。著書に「PostgreSQL完全攻略ガイド」「PHPxPostgreSQLで作る最強Webシステム」(技術評論社)などがある。


INDEX
第2回:postgresql.confによるチューニング(2)
postgresql.confの設定を見直そう
  commit_delay