pg_settings
pg_settings
ビューはサーバの実行時パラメータへのアクセスを提供します。
基本的にSHOWとSETコマンドの代わりとなるインタフェースです。
同時に最大・最小値などのようにSHOW
コマンドでは直接入手できないそれぞれのパラメータのいくつかの実状にアクセスする機能を提供します。
表49.74 pg_settings
の列
名前 | 型 | 説明 |
---|---|---|
name | text | 実行時設定パラメータ名 |
setting | text | パラメータの現在値 |
unit | text | 暗黙的なパラメータの単位 |
category | text | パラメータの論理グループ |
short_desc | text | パラメータの簡潔な説明 |
extra_desc | text | 追加で、より詳細なパラメータについての説明 |
context | text | パラメータ値を設定するために必要な文脈(後述) |
vartype | text | パラメータの型(bool 、enum 、integer 、real もしくはstring )
|
source | text | 現在のパラメータ値のソース |
min_val | text | 容認されている最小のパラメータ値(数値でない場合はNULL) |
max_val | text | 容認されている最大のパラメータ値(数値でない場合はNULL) |
enumvals | text[] | 許可された列挙パラメータの値(列挙型ではない場合はNULL) |
boot_val | text | パラメータが設定されていなかったとした場合に仮定されるサーバ起動時のパラメータ値 |
reset_val | text | 現状のセッションにおいてRESET によって戻されるパラメータの値 |
sourcefile | text | 現状の値が設定されている設定ファイル(設定ファイル以外のソースから設定された値の場合とスーパーユーザ以外から検査された時はNULLとなります)。
設定ファイル内でinclude 指示子を使用する時に役に立ちます。 |
sourceline | integer | 現状の値が設定されている設定ファイル内の行番号(設定ファイル以外のソースから設定された値の場合とスーパーユーザ以外から検査された時はNULLとなります。) |
pending_restart | boolean | 値が設定ファイル内で変更されたが再起動が必要という場合はtrue 、それ以外の場合はfalse 。
|
context
が取り得る値は複数あります。
この設定の変更の困難さを軽くするために、以下に示します。
internal
これらの設定は直接変更できません。
これらは内部で決定された値を反映するものです。
一部は異なる設定オプションでサーバを再構築する、または、initdb
に与えるオプションを変更することで調整することができます。
postmaster
これらの設定はサーバ起動時にのみ適用することができます。
このため何かを変更するためにはサーバを再起動しなければなりません。
これらの設定用の値は通常postgresql.conf
ファイル内に格納されている、あるいは、サーバを起動する際のコマンドラインから渡されます。
当然ながら、より低い種類のcontext
を持つ設定もサーバ起動時に設定することができます。
sighup
これらの設定は、サーバを再起動することなくpostgresql.conf
内を変更することで行うことができます。
postgresql.conf
を再度読み込み、変更を適用させるためには、postmasterにSIGHUPシグナルを送信してください。
すべての子プロセスが新しい値を選択するように、postmasterは同時に子プロセスにSIGHUPシグナルを転送します。
superuser-backend
これらの設定は、サーバを再起動することなくpostgresql.conf
内を変更することで行うことができます。
また、接続要求パケットの中で特定のセッション向けに設定することもできます(例えばlibpqのPGOPTIONS
環境変数)が、これは接続ユーザがスーパーユーザの場合に限られます。
しかし、これらの設定はセッションが開始してから、そのセッションの中で変更することはできません。
postgresql.conf
内でそれらを変更した場合は、postgresql.conf
を再度読み込ませるために、postmasterにSIGHUPシグナルを送信してください。
新しい値はその後で始まったセッションにのみ影響を与えます。
backend
これらの設定は、サーバを再起動することなくpostgresql.conf
内を変更することで行うことができます。
また、接続要求パケットの中で特定のセッション向けに設定することもできます(例えばlibpqのPGOPTIONS
環境変数)。
どのユーザでも、自分のセッション向けにそのような変更をすることができます。
しかし、これらの設定はセッションが開始してから、そのセッションの中で変更することはできません。
postgresql.conf
内でそれらを変更した場合は、postgresql.conf
を再度読み込ませるために、postmasterにSIGHUPシグナルを送信してください。
新しい値はその後で始まったセッションにのみ影響を与えます。
superuser
これらの設定はpostgresql.conf
、または、セッションの中でSET
コマンドを使用することで設定することができます。
しかしSET
経由で変更できるのはスーパーユーザのみです。
postgresql.conf
内の変更は、セッション独自の値がSET
で設定されていない場合にのみ、既存のセッションに影響を与えます。
user
これらの設定はpostgresql.conf
、または、セッションの中でSET
コマンドを使用することで設定することができます。
任意のユーザが自身のセッション独自の値を変更することが許されています。
postgresql.conf
内の変更は、セッション独自の値がSET
で設定されていない場合にのみ、既存のセッションに影響を与えます。
これらのパラメータを変更する各種方法に関する情報については18.1. パラメータの設定を参照してください。
pg_settings
ビューには挿入も削除もできませんが、更新することは可能です。
pg_settings
行に適用されるUPDATE
は名前付きのパラメータに対してSETコマンドを実行することと同値です。
変更は現在のセッションで使用されている値にのみ有効です。
もしも後に中止されるトランザクション内でUPDATE
が発行されると、トランザクションがロールバックされた時点でUPDATE
コマンドは効力を失います。
排他制御中のトランザクションがひとたびコミットされると、その効果は他のUPDATE
もしくはSET
コマンドで上書きされない限りセッションの完了まで保たれます。