log_min_duration_statement設定は無視されます


15

Postgresql 9.1Ubuntuで実行しています。正確なPostgresqlバージョンは9.1+129ubuntu1、パッケージマネージャーが示すとおりです。

アクティブに使用されている2つのデータベースがあり、それらはリモートサーバーから使用されます。

実行時間が長いクエリを記録したい。だから私は/etc/postgresql/9.1/main/postgresql.confファイルに次のパラメータを設定します

log_min_duration_statement = 10000
log_statement = 'mod'

そのため、Postgresqlは10秒以上かかるクエリをログに記録します。

しかし、私reloadがpostgres構成を行うと、Postgresqlはlog_statement値に適合するすべてのクエリのログを記録し始めます。確実に持続時間を100秒に設定したこと

log_min_duration_statement = 100000

しかし、Postgresqlはlog_statement、値に関係なく、log_min_duration_statement値に適合するすべてのクエリのログを記録し続けます。

ロギングを停止log_statementするnoneように設定する。

構成に関して私が見逃したものはありますか?


問題は、2つのセットの交差ではなく、2つのセットの結合を記録することです。あなたが望むようにそれができるかどうか私は知りません。
dezso

だから、私は無効にする必要があります(コメントアウト)log_statementのでlog_min_duration_statement動作するはずです
FallenAngel

あなたは、単にすべての実行時間の長い文をログに記録したい場合は(それもSELECTUPDATEまたはいくつかのDDL)、[はい。
dezso

回答:


21

あなたは近くにいました。あなたの最後のアイデアは、実際に行く方法です:

log_statement = none
log_min_duration_statement = 10000

その後、クエリ文字列自体を含め、10秒より長く実行されているステートメントを除き、ステートメントはログに記録されません。10秒が高いしきい値であるため、ロギングが停止したように見える場合があります。私は通常2秒を使用していますが、YMMVです。

SOに関するこの関連する回答には、もっとあります:
log_min_duration_statementを取得できません


3
のデフォルトlog_statementnoneであることを追加します。そのため、設定も設定noneも同じ効果はありません。
dezso
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.