- EDB
- PostgreSQL
EDBがもたらすデータベースの新たな価値 ~ EDB社Field CTO Ajit Gadge氏来日、セミナー講演レポート ~
EDB社のAjit Gadge氏を招き「PostgreSQLユーザーに捧ぐ、EDBを使ったDB機能向上とコスト削減の両立」セミナーを開催しました。DB市場の現状やトレンド、EDBの最新動向について紹介しております。アシストセッションのアーカイブ配信の視聴申し込みも可能です。ぜひご覧ください。
|
チェックポイントはディスクI/Oを伴う処理ですので、短い間隔で繰り返し実行されると性能劣化を引き起こす可能性があります。本記事では、PostgreSQL(9.5以降)でチェックポイントが多発しているかの確認と、多発していた場合の対処方法について説明します。
また、参考記事として、「【PostgreSQL9.5】max_wal_sizeとmin_wal_sizeの概要について
」もご覧いただけると理解が深まります。PostgreSQL9.5でチェックポイントの間隔を調整する際に使用するパラメータであるmax_wal_sizeとmin_wal_sizeの概要について解説しています。
チェックポイントは、以下の理由からI/O負荷の高い処理です。チェックポイントが多発することでPostgreSQLが動作するサーバ全体の性能に影響を及ぼす可能性があります。
PostgreSQLのログファイルから、max_wal_sizeの値を増やすことを促すメッセージの有無を確認します。以下のメッセージが頻出している場合は、チェックポイントの間隔が短すぎます。
HINT: Consider increasing the configuration parameter "max_wal_size".
ログファイルからこのメッセージを確認できない場合、または、稀にしか確認できない場合は、max_wal_sizeのチューニングは不要です。
このメッセージは、前回チェックポイントからパラメータ
checkpoint_warning
(デフォルト30秒) に指定された秒数以内に再度チェックポイントが行われた場合に記録されます。checkpoint_warningにデフォルト値の30を設定している場合、以下の例では出力が頻発しているため、max_wal_sizeのチューニングが必要であると判断できます。
[2016-08-09 10:54:25 JST] 19288[141]LOG: checkpoints are occurring too frequently (27 seconds apart)
[2016-08-09 10:54:25 JST] 19288[142]HINT: Consider increasing the configuration parameter "max_wal_size".
〜中略〜
[2016-08-09 10:54:53 JST] 19288[145]LOG: checkpoints are occurring too frequently (28 seconds apart)
[2016-08-09 10:54:53 JST] 19288[146]HINT: Consider increasing the configuration parameter "max_wal_size".
〜中略〜
[2016-08-09 10:55:21 JST] 19288[149]LOG: checkpoints are occurring too frequently (27 seconds apart)
[2016-08-09 10:55:21 JST] 19288[150]HINT: Consider increasing the configuration parameter "max_wal_size".
チェックポイントが多発していた場合には、PostgreSQLのログファイルに当該メッセージが頻発しなくなるまで、以下の手順でwal_max_sizeの値を増やします。デフォルトは1GBに設定されています。max_wal_sizeはデータベースクラスタ単位で設定するパラメータのため、任意のデータベースに接続して作業を行うとすべてのデータベースに設定が反映されます。
(OSのプロンプトから実行)
psql -U <PostgreSQLのスーパーユーザ> -d <任意のデータベース名>
$ psql -U testuser -d testdb
(psqlのプロンプトから実行)
ALTER SYSTEM SET max_wal_size='<設定値>';
testdb=# ALTER SYSTEM SET max_wal_size='1536MB';
(OSのプロンプトから実行)
pg_ctl reload
$ pg_ctl reload
なお、min_wal_sizeの設定は、チェックポイントの間隔に影響しないため変更する必要はありません。
PostgreSQL9.4以前のバージョンでチェックポイントが多発しているかを確認するには、PostgreSQLのログファイルに以下のメッセージが頻発していないかを確認します。以下のメッセージが頻発して出力されている場合は、以下のメッセージが頻発しなくなるまでcheckpoint_segmentsの値を増やしてください。
HINT: Consider increasing the configuration parameter "checkpoint_segments".
今回は、PostgreSQLのログファイルからチェックポイントが多発していないかを確認した上で、チェックポイント多発による性能劣化に対処する方法をご紹介しました。
皆さまの環境でも上述のHINTのメッセージが出力されていないかをぜひ確認してみてください。仮に、HINTのメッセージが頻発している場合には、今回紹介した方法でPostgreSQLの処理性能が大きく改善されるかもしれません。
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
EDB社のAjit Gadge氏を招き「PostgreSQLユーザーに捧ぐ、EDBを使ったDB機能向上とコスト削減の両立」セミナーを開催しました。DB市場の現状やトレンド、EDBの最新動向について紹介しております。アシストセッションのアーカイブ配信の視聴申し込みも可能です。ぜひご覧ください。
35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載最終回となる9回目の記事では、「PostgreSQL SQLチューニング実践」のワークショップ主管である 田中 健一朗 にインタビューしました。
35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載8回目となる今回の記事では、PostgreSQL DB稼働分析ワークショップの主管である保田 公貴にインタービューしました。