pg_settings

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 第 45章システムカタログ | 早送り | 次のページ

# 45.62. `pg_settings`

`pg_settings`ビューはサーバの実行時パラメータへのアクセスを提供します。 基本的にSHOWとSETコマンドの代わりとなるインタフェースです。 同時に最大・最小値などのように`SHOW`コマンドでは直接入手できないそれぞれのパラメータのいくつかの実状にアクセスする機能を提供します。

表 45-63. `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となります。)

`context`が取り得る値は複数あります。 この設定の変更の困難さを軽くするために、以下に示します。

`internal`

  これらの設定は直接変更できません。 これらは内部で決定された値を反映するものです。 一部は異なる設定オプションでサーバを細構築する、または、`initdb`に与えるオプションを変更することで調整することができます。

`postmaster`

  これらの設定はサーバ起動時にのみ適用することができます。 このため何かを変更するためにはサーバを再起動しなければなりません。 これらの設定用の値は通常`postgresql.conf`ファイル内に格納されている、あるいは、サーバを起動する際のコマンドラインから渡されます。 当然ながら、より低い種類の`context`を持つ設定もサーバ起動時に設定することができます。

`sighup`

  これらの設定は、サーバを再起動することなく`postgresql.conf`内を変更することで行うことができます。 `postgresql.conf`を再度読み込み、変更を適用させるためには、postmasterにSIGHUPシグナルを送信してください。 すべての子プロセスが新しい値を選択するように、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`コマンドで上書きされない限りセッションの完了まで保たれます。

前のページ | ホーム | 次のページ
`pg_seclabels` | 上に戻る | `pg_shadow`