9.20. システム管理関数

表9-44に、実行時設定パラメータの問い合わせや変更に使用できる関数を示します。

表 9-44. パラメータを設定する関数

名前戻り値型説明
current_setting(setting_name) text現在の設定値
set_config(setting_name, new_value, is_local) textパラメータを設定し、その新規値を返す

current_settingは、setting_nameの現在の設定値を返します。この関数は、SQLSHOWコマンドと同じです。以下に例を示します。

SELECT current_setting('datestyle');

 current_setting
-----------------
 ISO, MDY
(1 row)

set_config関数により、setting_nameパラメータの設定をnew_valueに変更することができます。ただし、is_localtrueに設定されている場合、新規値は現在のトランザクションにのみ適用されます。新規値を現在のセッションに適用する場合は、代わりにfalseを使用してください。この関数は、SQLのSETコマンドと同じです。以下に例を示します。

SELECT set_config('log_statement_stats', 'off', false);

 set_config
------------
 off
(1 row)

表9-45に示す関数は、制御用シグナルを他のサーバプロセスに送信します。この関数の使用はスーパーユーザのみに制限されています。

表 9-45. サーバシグナル送信関数

名前戻り値型説明
pg_cancel_backend(pid int) booleanバックエンドの現在の問い合わせをキャンセル
pg_reload_conf() booleanサーバプロセスに構成ファイルの再読み込みをさせる
pg_rotate_logfile() booleanサーバログファイルを回転させる

これらのぞれぞれの関数は成功の場合 trueを返し、そうでない場合はfalseを返します。

pg_cancel_backendは問い合わせ取り消し(SIGINT)シグナルをプロセス識別子で特定されたバックエンドプロセスに送ります。動いているバックエンドのプロセス識別子はpg_stat_activityビューのprocpid列から、もしくはpsによりサーバ上のpostgresプロセスをリストすることで見つけられます。

pg_reload_confSIGHUPシグナルをpostmasterに送り、その結果全てのサーバプロセスが構成ファイルを再読み込みすることになります。

pg_rotate_logfileはログファイルマネージャに即座に新規出力ファイルに切替えるよう信号を発します。これはログ取得に redirect_stderrが使用されている場合にのみ有効です。そうでない場合にはログファイルマネージャの子プロセスが存在しないからです。

表9-46に示す関数はオンラインバックアップの作成を補助するものです。これらの関数の使用はスーパーユーザに制限されています。

表 9-46. バックアップ制御関数

名前戻り値型説明
pg_start_backup(label text) textオンラインバックアップの実行準備を実施
pg_stop_backup() textオンラインバックアップの実行を停止

pg_start_backupは、ユーザが任意に定義したバックアップラベルである、パラメータを1つ受け付けます(通常、格納に使用するバックアップダンプファイルにちなんだ名前が付けられます)。この関数は、データベースクラスタのデータディレクトリにバックアップラベルファイルを書き出し、バックアップを始めるWALオフセットをテキスト形式で返します(ユーザはこの結果値に注意する必要はありません。しかし、使用されることもありますのでこの値が提供されています)。

pg_stop_backupは、pg_start_backupで作成されたラベルファイルを削除し、代わりに、WALアーカイブ領域にバックアップ履歴ファイルを作成します。履歴ファイルにはpg_start_backupで付与されたラベル、バックアップのWALオフセットの開始位置、終了位置、バックアップ開始時刻、終了時刻が含まれます。戻り値は、バックアップの終了WALオフセットです(これも同様に稀に使用されることがあります)。

この関数の正しい使用方法については、項23.3を参照してください。

表9-47で示された関数はデータベースオブジェクトの実際のディスク領域を計算します。

表 9-47. データベースオブジェクト容量関数

名前戻り値型説明
pg_column_size(any)int特定の値を格納するのに使用される(ひょっとしたら圧縮された)バイト数
pg_tablespace_size(oid) bigint指定されたOIDを持つテーブル空間で使用されるディスク領域
pg_tablespace_size(name) bigint指定された名前を持つテーブル空間で使用されるディスク領域
pg_database_size(oid) bigint指定されたOIDを持つでデータベースで使用されるディスク領域
pg_database_size(name) bigint指定された名前を持つデータベースで使用されるディスク領域
pg_relation_size(oid) bigint指定されたOIDを持つテーブルもしくはインデックスで使用されるディスク領域
pg_relation_size(text) bigint 指定された名前を持つテーブルもしくはインデックスで使用されるディスク領域。テーブル名はスキーマ名で条件付けられることもあります。
pg_total_relation_size(oid) bigint 特定されたOIDを持つテーブルで使用されるディスク領域で、インデックスとtoastされたデータを含みます。
pg_total_relation_size(text) bigint 特定された名前を持つテーブルで使用されるディスク領域で、インデックスとtoastされたデータを含みます。テーブル名はスキーマ名で条件付けられることもあります。
pg_size_pretty(bigint) text容量単位で目で見て理解できる形式にバイト数に領域を変換します。

pg_column_sizeはどんな個別のデータ値を格納するのにも使用される領域を示します。

pg_tablespace_sizepg_database_sizeはOID、テーブル空間名、もしくはデータベースを受け付けて、それらが使用する全てのディスク領域を返します。

pg_relation_sizeはOIDもしくはテーブル名、インデックスもしくはtoastテーブルを受け付け、バイト単位の容量を返します。

pg_total_relation_sizeはOIDもしくはテーブル名、もしくはtoastテーブルを受け付け、データと全ての関連したインデックスおよびtoastテーブルのバイト数を返します。

pg_size_prettyは、適切にkB、MB、GB、もしくはTB単位を使用して目で見た判るようにその他の関数の1つの結果を整形するのに使用することができます。

表9-48で示されている関数はサーバをホスティングしているマシン上のファイルに対し、本来的に適用するファイルアクセスを提供します。データベースクラスタディレクトリとlog_directoryに存在するファイルのみがアクセス可能です。クラスタディレクトリ内のファイルに対して相対パスを、そしてログファイルに対してはlog_directory構成設定に一致するパスを使用してください。

表 9-48. 汎用ファイルアクセス関数

名前戻り値型説明
pg_ls_dir(dirname text) setof textディレクトリ内容のリスト
pg_read_file(filename text, offset bigint, length bigint) textテキストファイルの内容を返す
pg_stat_file(filename text) recordファイル情報を返す

pg_ls_dirは、特別なエントリである"."および".."を除いた、指定されたディレクトリの全ての名前を返します。

pg_read_fileは与えられたoffsetから始まり、最大lengthバイト(最初にファイルの終りに到達すればこれより少なくなります)テキストファイルの一部分を返します。offsetが負の場合にはファイルの終りまで関係します。

pg_stat_fileはファイル容量、最後にアクセスされたタイムスタンプ、最後に変更されたタイムスタンプ、最後にタイムスタンプを変更したファイルステータス(これはUnixのみ)、およびもしディレクトリであればそれを示す論理値を返します。典型的な使用法を示します。

SELECT * FROM pg_stat_file('filename');
SELECT (pg_stat_file('filename')).modification;