Heroku PGSettings
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年11月07日(月)
Table of Contents
Heroku Postgres の非レガシープラン Standard、Premium、Private、Shield では、pg:settings
コマンドでパラメータを設定することによってデータベース設定を管理できます。
$ heroku pg:settings postgresql-large-1234 -a example-app
=== postgresql-large-1234
log-lock-waits: true
log-min-duration-statement: 2000
log-statement: ddl
Essential 層プランには、再構成できないデフォルト設定が含まれています。
log-lock-waits
log-lock-waits
は、セッションがロックを取得するために 1 秒より長い時間待機したときにログメッセージを生成するかどうかを決定します。ロックの待機によりパフォーマンスの問題が発生する可能性があります。Heroku Postgres でのデフォルト値はオンです。
$ heroku pg:settings:log-lock-waits off -a example-app
log-lock-waits has been set to false for postgresql-large-1234.
When a deadlock is detected, no log message will be emitted in your application's logs.
log-min-duration-statement
log-min-duration-statement
では、ステートメントが少なくとも指定された期間 (ミリ秒数単位) 実行された場合は、完了した各ステートメントの期間がログに記録されます。ここで、0 の値はすべてをログに記録し、-1 の値はログ記録を無効にします。この設定は、アプリケーション内の最適化されていないクエリを追求するのに役立ちます。Heroku Postgres での log-min-duration-statement のデフォルト値は 2000 ミリ秒 (2 秒) に設定されています。
毎秒数百件のクエリが実行されているシステムでは、ログファイルが急速に増大し、データベースのパフォーマンスが低下する可能性があります。
$ heroku pg:settings:log-min-duration-statement 3000 postgresql-large-1234 -a example-app
log-min-duration-statement has been set to 3000 for postgresql-large-1234.
log-statement
log-statement
は、どの正常な SQL ステートメントをログに記録するかを制御します。これは、複雑なクエリをデバッグしたり、アプリまたはあらゆるデータベースユーザーによって作成されたクエリを確認したりするのに役立てることができます。log-statement
の有効な値は次のとおりです。
- none: 正常なクエリのログ記録を停止します。その他のログ (遅いクエリのログ、ロックを待機しているクエリ、構文エラーなど) は引き続き生成されます。
- ddl: すべてのデータ定義ステートメント (CREATE、ALTER、DROP など) がログに記録されます。
- mod: ddl のすべてのステートメントのほか、INSERT、UPDATE、DELETE、TRUNCATE、COPY などのデータ変更ステートメントが含まれます。
- all: すべてのステートメントがログに記録されます。
Heroku Postgres での log-statement
のデフォルト値は ddl
です。
$ heroku pg:settings:log-statement all postgresql-large-1234 -a example-app
log-statement has been set to all for postgresql-large-1234.
track-functions
track-functions
は、どの関数の実行統計を追跡するかを決定します。これらの統計は pg_stat_user_functions
ビューで確認できます。track-functions
の有効な値は次のとおりです。
- none: 関数の統計を記録しません。これがデフォルトです。
- pl: 手続き型言語の関数の統計を記録します (例: PL/pgSQL の関数)。
- all: SQL や C 言語の関数を含め、すべての関数の統計を記録します。
$ heroku pg:settings:track-functions pl postgresql-large-1234 -a example-app
track-functions has been set to pl for postgresql-large-1234.
Track only procedural-language functions.