【PostgreSQL】最低限設定しておくべきログ関連パラメータ3選:データベースサポート最前線の現場から(8)(3/3 ページ)
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、PostgreSQLの障害発生に備えて設定しておくべき「3つのログ関連パラメータ」を紹介します。
3:log_min_duration_statement
最後の「log_min_duration_statement」では、SQLの実行に指定した*ミリ秒以上の時間がかかった場合に、そのSQLと所要時間をログファイルに記録します。
初期値は、「-1(SQLおよびその所要時間の記録をしない)」に設定されています。このパラメータに、システム上許容できないレスポンス時間を設定しておくことで、ログファイルから、遅延が発生した「スロークエリ」を把握できるようになります。
設定方法(Linux系システムの場合)
- 1:PostgreSQLをインストールしたOSユーザーに接続
# su - <PostgreSQLをインストールしたOSユーザー名>
- 2:「PGDATA/postgresql.conf」を開き、log_min_duration_statementの値に許容できないレスポンス時間(単位はミリ秒)を設定する
- 3:PostgreSQLをリロードする
$ pg_ctl reload
設定方法(Windows系システムの場合)
- 1:PostgreSQLをインストールしたOSユーザー、あるいはAdministratorユーザーでログインする
- 2:「PGDATA/postgresql.conf」を開き、log_min_duration_statementの値に許容できないレスポンス時間(単位はミリ秒)を設定する
- 3:PostgreSQLをリロードする
> pg_ctl reload
ログファイルの出力例
log_min_duration_statementの値を「10000」と設定し、10秒以上かかるSQLを実行した際に出力されたログファイルの内容を示します(例3)。
[2015-08-30 21:28:20 JST] 2727[6]LOG: parameter "log_min_duration_statement" changed to "10000" [2015-08-30 21:29:26 JST]testuser postgres 17060[1]LOG: duration: 63122.171 ms statement: select * from pgbench_accounts where aid>5000; <--
2行目:
・検出時刻:2015-08-30 21:29:26
・処理を実行したユーザー名:testuser
・接続先データベース名:postgres
・OSのPID:17060
・PID 17060に関連するメッセージ1:LOG: duration: 63122.171 ms statement: select * from pgbench_accounts where aid>5000;
・スロークエリ:select * from pgbench_accounts where aid>5000;
・所要時間:63122.171 ms(約63秒)
このように、ログファイルからスロークエリを確認できるようになります。
この情報は、「スロークエリで参照するテーブルの統計情報が最新であるか」や「EXPLAIN ANALYZE <スロークエリ>コマンドを使用して適切な実行計画で処理が行われているか」など、ボトルネックの改善対処に役立つでしょう。
まとめ
今回は、PostgreSQLの障害発生に備えて設定しておくべきパラメータとして、「logging_collector」「log_line_prefix」「log_min_duration_statement」を紹介しました。これらを設定しておくことで、障害発生時の状況把握や問題解決がスムーズになります。ぜひこれを機に設定の有無を確認してください。
なお、今回紹介したパラメータ以外にもPostgreSQLの状況把握に役立つログ関連パラメータは複数存在します。興味のある方はPostgreSQLマニュアル 「エラー報告とログ取得」の章も併せて参照するようにしてください。
(*1 参考リンク)PostgreSQLマニュアル 「エラー報告とログ取得」
筆者紹介
家島拓也
2007年アシスト入社。オラクル製品やPostgreSQL/EDB Postgres製品のサポートに従事。最前線のサポート対応で得た知識や知見を元に、顧客が困ることの多い問題/課題や各製品の新機能に関する検証結果に関する情報発信も行っている
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「新機能」「廃止機能」「サポート状況」から見たユーザーにとってのOracle Database 12c
Oracle Database導入を実施ならびに支援するサービスプロバイダという筆者の立場から、ユーザーにとっての新バージョンの意義を考えながら、新機能や廃止された機能などを紹介します。 - オラクルが確約した「クラウド6箇条」と「Database 12c R2」の気になるトコロ
米オラクルのラリー・エリソンCTOが、同社の年次イベントで今後のクラウド事業の行方を確約する「Oracle Cloud、6つの設計目標」を掲げました。同時に発表された基幹製品「Oracle Database 12c」の次期バージョンのポイントと共に、そこにどんな狙いがあるかを振り返ります。 - オラクルのエリソン会長、「Oracle Database」最新版や多数のクラウドイノベーションを発表
米オラクルのラリー・エリソン氏は「Oracle OpenWorld 2016」の開幕基調講演を行い、同社のクラウドコンピューティングプラットフォーム全般にわたる多くのイノベーションを披露した。 - 【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は基本編として「アラートログの調査で押さえるべき3つのポイント」を解説します。【Oracle Database 12c対応版】 - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。 - カーソル・エラーとオブジェクトの問題切り分け
Oracleデータベースの運用管理者は、突発的に直面するパフォーマンス障害にどうやって対処したらよいか。本連載は、非常に複雑なOracleのアーキテクチャに頭を悩ます管理者に向け、短時間で問題を切り分け、対処法を見つけるノウハウを紹介する。対象とするバージョンはOracle8から9iまでを基本とし、10gの情報は随時加えていく。(編集局) - IF文のネスト地獄から抜け出せるMERGE文