すべてのプロダクト
Search
ドキュメントセンター

PolarDB:システム管理関数

最終更新日:May 31, 2024

このセクションで説明する関数は、PostgreSQLインストールの制御と監視に使用されます。

構成設定機能

次の表は、ランタイム設定パラメーターのクエリと変更に使用できる関数を示しています。

構成設定機能

関数

説明

例 (s)

current_setting (setting_name text [, missing_ok boolean] ) → text

設定setting_nameの現在の値を返します。 そのような設定がない場合、missing_okが指定され、trueでない限り、current_settingはエラーをスローします (この場合、NULLが返されます) 。 この関数は、SQLコマンドSHOWに対応します。

current_setting('datestyle')ISO, MDY

set_config (setting_name text, new_value text, is_local boolean) → text

パラメーターsetting_namenew_valueに設定し、その値を返します。 is_localtrueの場合、新しい値は現在のトランザクション中にのみ適用されます。 現在のセッションの残りの部分に新しい値を適用する場合は、代わりにfalseを使用します。 この関数は、SQLコマンドSETに対応します。

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

サーバー信号機能

次の表に示す関数は, 他のサーバプロセスに制御信号を送信します。 これらの機能の使用はデフォルトでスーパーユーザーに制限されていますが、例外を除いて、GRANTを使用して他のユーザーにアクセスを許可することができます。

これらの各関数は、信号の送信に成功した場合はtrueを返し、信号の送信に失敗した場合はfalseを返します。

サーバー信号機能

pg_cancel_backend (pid整数) → ブール値

指定されたプロセスIDを持つバックエンドプロセスを持つセッションの現在のクエリをキャンセルします。 これは、呼び出し元のロールがバックエンドがキャンセルされているロールのメンバーである場合、または呼び出し元のロールにpg_signal_backendが付与されている場合にも許可されますが、スーパーユーザーのみがスーパーユーザーバックエンドをキャンセルできます。

pg_reload_conf () → boolean

PostgreSQLserverのすべてのプロセスを構成ファイルにリロードします。 (これは、aSIGHUP信号をポストマスタプロセスに送信することによって開始され、ポストマスタプロセスは、その子の各々にSIGHUPを送信する。) リロードする前に、pg_file_settingsおよびpg_hba_file_rulesビューを使用して、設定ファイルのエラーを確認できます。

pg_rotate_logfile () → boolean

すぐに新しい出力ファイルに切り替えるようにログファイルマネージャに通知します。 これは、組み込みのログコレクターが実行されている場合にのみ機能します。

pg_terminate_backend (pid整数) → boolean

指定したプロセスIDを持つバックエンドプロセスのセッションを終了します。 これは、呼び出し元のロールがバックエンドを終了するロールのメンバーである場合、または呼び出し元のロールにpg_signal_backendが付与されている場合にも許可されますが、スーパーユーザーのみがスーパーユーザーバックエンドを終了できます。

pg_cancel_backendpg_terminate_backendは、プロセスIDで識別されるバックエンドプロセスにシグナル (それぞれSIGINTorSIGTERM) を送信します。 アクティブなバックエンドのプロセスIDは、pg_stat_activityビューのpid列から、またはサーバー上のpostgresプロセス (usingpson UnixまたはtheTask ManageronWindows) をリストすることで確認できます。 アクティブなバックエンドのロールは、pg_stat_activityビューのusename列から確認できます。

バックアップ制御機能

以下の表に示す機能は、オンラインバックアップの作成に役立ちます。 これらの関数は、リカバリ中に実行できません (非排他的pg_start_backup、非排他的pg_stop_backuppg_is_in_backuppg_backup_start_time、およびpg_wal_lsn_diffを除く) 。

バックアップ制御機能

pg_create_restore_point (テキスト 名前) → pg_lsn

後でリカバリターゲットとして使用できる名前付きマーカーレコードを先行書き込みログに作成し、対応する先行書き込みログの場所を返します。 指定された名前をrecovery_target_nameと共に使用して、回復が進行するポイントを指定できます。 同じ名前の復元ポイントを複数作成しないでください。復元は、復元ターゲットと一致する名前の最初の復元ポイントで停止します。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_current_wal_flush_lsn () → pg_lsn

現在の先行書き込みログフラッシュの場所を返します (以下のメモを参照) 。

pg_current_wal_insert_lsn () → pg_lsn

現在の先行書き込みログの挿入位置を返します (以下のメモを参照) 。

pg_current_wal_lsn () → pg_lsn

現在の先行書き込みログの書き込み場所を返します (以下のメモを参照) 。

pg_start_backup (label text [, fast boolean [, exclusive boolean ]] ) → pg_lsn

サーバーを準備してオンラインバックアップを開始します。 唯一必要なパラメーターは、バックアップの任意のユーザー定義ラベルです。 (通常、これはバックアップダンプファイルが格納される名前になります。) オプションの2番目のパラメーターがtrueの場合、pg_start_backupをできるだけ早く実行することを指定します。 これは、I/O操作のスパイクを引き起こす即時のチェックポイントを強制し、同時に実行するクエリを遅くします。 オプションの3番目のパラメーターは、排他的バックアップと非排他的バックアップのどちらを実行するかを指定します (デフォルトは排他) 。

排他モードで使用すると、この関数はバックアップラベルファイル (backup_label) を書き込み、pg_tblspc/ ディレクトリにリンクがある場合は、テーブルスペースマップファイル (tablespace_map) をデータベースクラスターのデータディレクトリに書き込み、チェックポイントを実行してからバックアップの開始先ログの場所を返します。 (ユーザーはこの結果値を無視できますが、有用な場合に備えて提供されます。) 非排他モードで使用する場合、これらのファイルの内容はpg_stop_backup関数によって返され、ユーザーがバックアップ領域にコピーする必要があります。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_stop_backup(排他的 ブール値[,wait_for_archive ブール値] ) →setofレコード(lsn pg_lsn,labelfile テキスト,spcmapfile テキスト)

排他的または非排他的なオンラインバックアップの実行を終了します。 exclusiveパラメーターは、以前のpg_start_backup呼び出しと一致する必要があります。 排他的バックアップでは、pg_stop_backupはバックアップラベルファイルを削除し、存在する場合はpg_start_backupによって作成されたテーブルスペースマップファイルを削除します。 非排他的バックアップでは、これらのファイルの目的の内容は関数の結果の一部として返され、(データディレクトリではなく) バックアップ領域のファイルに書き込まれる必要があります。

boolean型のオプションの2番目のパラメーターがあります。 falseの場合、関数はバックアップが完了した直後に、WALがアーカイブされるのを待たずに戻ります。 この動作は、WALアーカイブを個別に監視するバックアップソフトウェアでのみ有効です。 そうしないと、バックアップを一貫させるために必要なWALが欠落し、バックアップが役に立たなくなる可能性があります。 デフォルトまたはこのパラメーターがtrueの場合、pg_stop_backupは、アーカイブが有効になっているときにWALがアーカイブされるのを待ちます。 (スタンバイの場合、これはarchive_mode=alwaysの場合にのみ待機することを意味します。 プライマリでの書き込みアクティビティが低い場合、即時セグメントスイッチをトリガするために、プライマリでpg_switch_walを実行することが有用であり得る。

この関数は、プライマリで実行されると、先行書き込みログアーカイブ領域にバックアップ履歴ファイルも作成します。 履歴ファイルには、pg_start_backupに付与されたラベル、バックアップの開始および終了先書き込みログの場所、およびバックアップの開始および終了時間が含まれます。 終了位置を記録した後、現在の先行書き込みログ挿入ポイントは、次の先行書き込みログファイルに自動的に進められ、その結果、終了先書き込みログファイルは、バックアップを完了するために直ちにアーカイブされ得る。

関数の結果は単一のレコードです。 lsn列には、バックアップの終了先書き込みログの場所が格納されます (これも無視できます) 。 排他的バックアップを終了すると、2番目と3番目の列はNULLになります。非排他的バックアップの後、それらはラベルとテーブルスペースマップファイルの目的の内容を保持します。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_stop_backup () → pg_lsn

排他的なオンラインバックアップの実行を終了します。 この簡易バージョンはpg_stop_backup(true, true) と同等ですが、pg_lsnの結果のみが返されます。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_is_in_backup () → ブール値

オンライン排他バックアップが進行中の場合はtrueを返します。

pg_backup_start_time () → タイムスタンプとタイムゾーンの

現在進行中のオンライン排他的バックアップの開始時刻を返し、進行中の場合はNULLを返します。

pg_switch_wal () → pg_lsn

サーバーを強制的に新しい先行書き込みログファイルに切り替えます。これにより、現在のファイルをアーカイブできます (継続的なアーカイブを使用している場合) 。 結果は、終了した先行書き込みログの場所に、完了したばかりの先行書き込みログファイル内の1を加えたものである。 前回の先行書き込みログの切り替え以降に先行書き込みログのアクティビティがない場合、pg_switch_walは何も行わず、現在使用中の先行書き込みログファイルの開始位置を返します。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_walfile_name (pg_lsn lsn) → text

先行書き込みログの場所を、その場所を保持するWALファイルの名前に変換します。

pg_walfile_name_offset (lsn pg_lsn) → record (file_name text, file_offset integer) をする

先行書き込みログの場所をWALファイル名とそのファイル内のバイトオフセットに変換します。

pg_wal_lsn_diff (lsn pg_lsnlsn pg_lsn) → 数値

2つの先行書き込みログの場所の間のバイト単位の差 (lsn1-lsn2) を計算します。 これは、pg_stat_replicationまたは一部の関数で使用して、レプリケーション遅延を取得できます。

pg_current_wal_lsnは、上記の関数で使用されているのと同じ形式で、現在の先行書き込みログの書き込み場所を表示します。 同様に、pg_current_wal_insert_lsnは現在の先行書き込みログの挿入場所を表示し、pg_current_wal_flush_lsnは現在の先行書き込みログのフラッシュ場所を表示します。 挿入位置は、任意の瞬間における先行書き込みログの「論理的」終端であり、一方、書き込み位置は、サーバの内部バッファから実際に書き出されたものの終端であり、フラッシュ位置は、耐久性記憶装置に書き込まれることが知られている最後の位置である。 書き込み場所は、サーバーの外部から調べることができる場所の終わりであり、通常、部分的に完全な先行書き込みログファイルをアーカイブする場合に必要な場所です。 挿入およびフラッシュ位置は、主にサーバのデバッグ目的で利用可能にされる。 これらはすべて読み取り専用の操作であり、スーパーユーザーの権限は必要ありません。

pg_walfile_name_offsetを使用して、対応する先行書き込みログファイル名とバイトオフセットをpg_lsn値から抽出できます。

同様に、pg_walfile_nameは先行書き込みログファイル名だけを抽出します。 指定された先行書き込みログの場所が正確に先行書き込みログファイルの境界にある場合、これらの関数は両方とも先行書き込みログファイルの名前を返します。 これは通常、先行書き込みログのアーカイブ動作を管理するために望ましい動作です。これは、前のファイルが現在アーカイブされる必要がある最後のファイルだからです。

リカバリ制御機能

次の表に示す機能では, 待機系サーバの現在の状態を把握しています。 これらの機能は、回復中と通常の実行中の両方で実行できます。

リカバリ情報関数

pg_is_in_recovery () → ブール値

リカバリがまだ進行中の場合はtrueを返します。

pg_last_wal_receive_lsn () → pg_lsn

ストリーミングレプリケーションによって受信され、ディスクに同期された最後の先行書き込みログの場所を返します。 ストリーミング複製が進行している間、これは単調に増加する。 回復が完了した場合、これは、回復中にディスクに同期されて受信された最後のWALレコードの位置で静的なままである。 ストリーミングレプリケーションが無効になっている場合、またはまだ開始されていない場合、関数はNULLを返します。

pg_last_wal_replay_lsn () → pg_lsn

リカバリ中にリプレイされた最後の先行書き込みログの場所を返します。 回復がまだ進行中であれば、これは単調に増加する。 回復が完了した場合、これは回復中に適用された最後のWALレコードの位置で静的なままである。 サーバーが復旧せずに正常に起動された場合、関数はNULLを返します。

pg_last_xact_replay_timestamp () → タイムスタンプとタイムゾーンの

リカバリ中に再生された最後のトランザクションのタイムスタンプを返します。 これは、そのトランザクションのコミットまたはアボートWALレコードがプライマリで生成された時刻です。 リカバリ中にトランザクションが再生されなかった場合、関数はNULLを返します。 そうでなければ、回復がまだ進行中であれば、これは単調に増加する。 回復が完了した場合、これは回復中に適用された最後のトランザクションの時点で静的なままである。 サーバーが復旧せずに正常に起動された場合、関数はNULLを返します。

次の表に示す関数は、リカバリの進行状況を制御します。 これらの機能は、回復中にのみ実行することができる。

リカバリ制御機能

pg_is_wal_replay_paused () → ブール値

回復の一時停止が要求された場合はtrueを返します。

pg_promideする (boolean DEFAULT truewait_seconds integer DEFAULT 60) → boolean)

スタンバイサーバーをプライマリ状態に昇格させます。 waittrue (デフォルト) に設定すると、プロモーションが完了するか、wait_seconds秒が経過するまで待機し、プロモーションが成功した場合はtrue、それ以外の場合はfalseを返します。 waitfalseに設定されている場合、ポストマスターにSIGUSR1信号を送信してプロモーションをトリガーした直後にtrueを返します。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_wal_replay_pause () → void

回復を一時停止する要求。 リクエストは、回復がすぐに停止するという意味ではありません。 リカバリが実際に一時停止されることを保証する場合は、pg_get_wal_replay_pause_state() によって返されるリカバリ一時停止状態を確認する必要があります。 pg_is_wal_replay_paused() は、リクエストが行われたかどうかを返します。 リカバリが一時停止されている間は、データベースの変更は適用されません。 ホットスタンバイがアクティブの場合、すべての新しいクエリはデータベースの同じ一貫したスナップショットを表示し、復旧が再開されるまでクエリの競合は発生しません。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_wal_replay_resume () → void

一時停止した場合は回復を再開します。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

プロモーションの進行中は、pg_wal_replay_pauseおよびpg_wal_replay_resumeを実行できません。 リカバリが一時停止中にプロモーションがトリガーされた場合、一時停止状態は終了し、プロモーションが続行されます。

ストリーミング複製が無効にされる場合、一時停止状態は問題なく無期限に継続することができる。 ストリーミング複製が進行中である場合、WALレコードは受信され続け、これは、一時停止の期間、WAL生成の速度、および利用可能なディスクスペースに応じて、最終的に利用可能なディスクスペースを埋める。

スナップショット同期関数

PostgreSQLでは、データベースセッションでスナップショットを同期できます。 スナップショットは、スナップショットを使用しているトランザクションに表示されるデータを決定します。 同期スナップショットは、2つ以上のセッションがデータベース内の同一のコンテンツを表示する必要がある場合に必要です。 2つのセッションがそれらのトランザクションを独立して開始する場合、いくつかの第3のトランザクションが2つのstart transactionコマンドの実行の間にコミットする可能性が常にあり、その結果、一方のセッションはそのトランザクションの効果を認識し、他方は認識しない。

この問題を解決するために、PostgreSQLではトランザクションが使用しているスナップショットをエクスポートできます。 エクスポートトランザクションが開いたままである限り、他のトランザクションはそのスナップショットをインポートすることができ、それによって、第1のトランザクションが見るデータベースのビューと全く同じビューを見ることが保証される。 ただし、コミットされていないトランザクションによって行われた変更の場合と同様に、これらのトランザクションのいずれかによって行われたデータベース変更は、他のトランザクションには表示されません。 したがって、トランザクションは既存のデータに関して同期されますが、トランザクション自体が行う変更に対しては通常どおりに機能します。

スナップショットはpg_export_snapshot関数でエクスポートされ、SET TRANSACTIONコマンドでインポートされます。

pg_export_snapshot () → text

トランザクションの現在のスナップショットを保存し、スナップショットを識別するテキスト文字列を返します。 この文字列は、スナップショットをインポートするクライアントに (データベースの外部に) 渡す必要があります。 スナップショットは、それをエクスポートしたトランザクションが終了するまでのみインポートできます。

必要に応じて、トランザクションは複数のスナップショットをエクスポートできます。 REPEATABLE READおよびより高い分離レベルでは、トランザクションはその存続期間を通して同じスナップショットを使用するため、そうすることはREAD COMMITTEDトランザクションでのみ有用であることに注意してください。 トランザクションがスナップショットをエクスポートすると、PREPARE transactionで準備することはできません。

レプリケーション管理関数

以下の表に示す機能は、レプリケーション機能を制御し、操作するためのものです。 レプリケーション元の関数の使用は、デフォルトでスーパーユーザーにのみ許可されています。 レプリケーションスロットの関数の使用は、replication権限を持つスーパーユーザーとユーザーに制限されます。

これらの機能の多くは、複製プロトコルにおいて同等のコマンドを有する。

pg_create_physical_replication_slot (slot_name [, すぐに_予約boolean, temporary boolean] )) → record (slot_name name, lsn pg_lsn ))

slot_nameという名前の新しい物理レプリケーションスロットを作成します。 オプションの2番目のパラメーター (trueの場合) は、このレプリケーションスロットのLSNを直ちに予約することを指定します。 物理スロットからのストリーミング変更は、ストリーミング複製プロトコルでのみ可能です。 オプションの3番目のパラメーターであるtemporaryは、trueに設定すると、スロットをディスクに永続的に格納せず、現在のセッションでのみ使用することを指定します。 一時的なスロットは、エラー時にも解放されます。 この関数は、レプリケーションプロトコルコマンドCREATE_REPLICATION_SLOTに対応します。 物理的

pg_drop_replication_slot (slot_name) → void

slot_nameという名前の物理または論理レプリケーションスロットを削除します。 レプリケーションプロトコルコマンドDROP_REPLICATION_SLOTと同じです。 論理スロットの場合、スロットが作成されたのと同じデータベースに接続している間にこれを呼び出す必要があります。

pg_create_logical_replication_slot(slot_name 名前,プラグイン 名前[,一時的 ブール値] ) →レコード(slot_name 名前,lsn pg_lsn)

出力プラグインプラグインを使用して、slot_nameという名前の新しい論理 (デコード) レプリケーションスロットを作成します。 オプションの3番目のパラメーターであるtemporaryは、trueに設定すると、スロットをディスクに永続的に格納せず、現在のセッションでのみ使用することを指定します。 一時的なスロットは、エラー時にも解放されます。 オプションの4番目のパラメーターである2フェーズは、trueに設定されている場合、準備されたトランザクションのデコードがこのスロットで有効になることを指定します。 この関数の呼び出しは、レプリケーションプロトコルコマンドCREATE_REPLICATION_SLOTと同じ効果があります。 ローカル

pg_copy_physical_replication_slot (src_slot_name, dst_slot_name [, temporary boolean] )) → record (slot_name name, lsn)

src_slot_nameという名前の既存の物理レプリケーションスロットをdst_slot_nameという名前の物理レプリケーションスロットにコピーします。 コピーされた物理スロットは、ソーススロットと同じLSNからWALを予約し始める。temporaryはオプションです。 temporaryを省略すると、ソーススロットと同じ値が使用されます。

pg_copy_logical_replication_slot(src_slot_name 名前,dst_slot_name 名前[,一時的 ブール値[,プラグイン 名前]] ) →レコード(slot_name 名前,lsn pg_lsn)

src_slot_nameという名前の既存の論理レプリケーションスロットをdst_slot_nameという名前の論理レプリケーションスロットにコピーします。 コピーされた論理スロットは、ソース論理スロットと同じLSNから始まる。 temporarypluginはどちらもオプションです。省略されている場合は、ソーススロットの値が使用されます。

pg_logical_slot_get_changes(slot_name 名前,upto_lsn pg_lsn,upto_nchanges 整数,VARIADIC オプション text[]) →setofレコード(lsn pg_lsn,xid xid,データ テキスト)

変更が最後に消費された時点から始まるスロットslot_nameの変更を返します。 upto_lsnupto_nchangesがNULLの場合、論理復号はWALの終了まで継続されます。 up_lsnが非NULLである場合、復号は、指定されたlsnより前にコミットするトランザクションのみを含む。 upto_nchangesがNULL以外の場合、デコードによって生成された行数が指定された値を超えると、デコードは停止します。 ただし、返される行の実際の数は、新しいトランザクションコミットをデコードするときに生成された行を追加した後にのみこの制限がチェックされるため、より大きくなる場合があります。

pg_logical_slot_peek_changes(slot_name 名前,upto_lsn pg_lsn,upto_nchanges 整数,VARIADIC オプション text[]) →setofレコード(lsn pg_lsn,xid xid,データ テキスト)

変更が消費されないことを除いて、pg_logical_slot_get_changes() 関数と同じように動作します。

pg_logical_slot_get_binary_changes(slot_name 名前,upto_lsn pg_lsn,upto_nchanges 整数,VARIADIC オプション text[]) →setofレコード(lsn pg_lsn,xid xid,データ ビテア)

変更がbyteaとして返されることを除いて、pg_logical_slot_get_changes() 関数と同じように動作します。

pg_logical_slot_peek_binary_changes(slot_name 名前,upto_lsn pg_lsn,upto_nchanges 整数,VARIADIC オプション text[]) →setofレコード(lsn pg_lsn,xid xid,データ ビテア)

変更がbyteaとして返されることを除いて、pg_logical_slot_peek_changes() 関数と同じように動作します。

pg_replication_slot_advance (slot_nameupto_lsn pg_lsn) → record (slot_nameend_lsn pg_lsn)

slot_nameという名前のレプリケーションスロットの現在の確定位置を進めます。 スロットは後方に移動されず、現在の挿入位置を越えて移動されることはない。 スロットの名前と、それが進められた実際の位置を返します。 更新されたスロット位置情報は、何らかの進行が行われた場合、次のチェックポイントで書き出される。 したがって、クラッシュの場合、スロットは以前の位置に戻る可能性があります。

pg_replication_origin_create (text node_name) → oid

指定された外部名を持つレプリケーションオリジンを作成し、割り当てられた内部IDを返します。

pg_replication_origin_drop (text node_name) → void

関連付けられたリプレイの進行状況を含め、以前に作成したレプリケーションオリジンを削除します。

pg_replication_origin_oid (text node_name) → oid

名前でレプリケーション元を検索し、内部IDを返します。 そのようなレプリケーション起点が見つからない場合は、NULLが返されます。

pg_replication_origin_session_setup (text node_name) → voidの

現在のセッションを指定されたオリジンからのリプレイとしてマークし、リプレイの進行状況を追跡できます。 オリジンが現在選択されていない場合にのみ使用できます。 元に戻すには、pg_replication_origin_session_resetを使用します。

pg_replication_origin_session_reset () → void

pg_replication_origin_session_setup() の効果をキャンセルします。

pg_replication_origin_session_is_setup () → ブール値

現在のセッションでレプリケーション起点が選択されている場合はtrueを返します。

pg_replication_origin_session_progress (ブール フラッシュ) → pg_lsn

現在のセッションで選択されているレプリケーション起点の再生場所を返します。 パラメータflushは、対応するローカルトランザクションがディスクにフラッシュされたことが保証されるかどうかを決定する。

pg_replication_origin_xact_setup (origin_lsn pg_lsnorigin_timestamp timestamp with time zone) → void

現在のトランザクションを、指定されたLSNandタイムスタンプでコミットしたトランザクションの再生としてマークします。 pg_replication_origin_session_setupを使用してレプリケーション起点が選択されている場合にのみ呼び出すことができます。

pg_replication_origin_xact_reset () → void

pg_replication_origin_xact_setup() の効果をキャンセルします。

pg_replication_origin_advance (text node_namelsn pg_lsn) → void

指定されたノードのレプリケーションの進行状況を指定された場所に設定します。 これは、最初の場所を設定する場合、または構成変更後に新しい場所を設定する場合などに主に役立ちます。 この関数を不注意に使用すると、データの複製が一貫しなくなる可能性があります。

pg_replication_origin_progress (text node_nameboolean flush) → pg_lsn

指定されたレプリケーションオリジンの再生場所を返します。 パラメータflushは、対応するローカルトランザクションがディスクにフラッシュされたことが保証されるかどうかを決定する。

pg_logical_emit_message (トランザクションブール値プレフィックステキストコンテンツテキスト) → pg_lsn

pg_logical_emit_message (トランザクションブールプレフィックステキストコンテンツbytea) → pg_lsn

論理復号メッセージを出力します。 これを使用して、汎用メッセージをWALを介して論理復号プラグインに渡すことができます。 transactionalパラメータは、メッセージが現在のトランザクションの一部であるかどうか、または論理デコーダがレコードを読み取るとすぐに、メッセージを直ちに書き込み、デコードするかどうかを指定します。 prefixパラメーターは、論理復号プラグインが興味のあるメッセージを簡単に認識するために使用できるテキストプレフィックスです。 contentパラメーターはメッセージの内容で、テキスト形式またはバイナリ形式で指定されます。

データベースオブジェクト管理関数

次の表に示す関数は、データベースオブジェクトのディスク領域使用量を計算したり、使用結果の表示や理解を支援したりします。bigintの結果はバイト単位で測定されます。 既存のオブジェクトを表さないOIDがこれらの関数のいずれかに渡された場合、NULLが返されます。

pg_column_size ("any") → integer

個々のデータ値を格納するために使用されるバイト数を示します。 テーブルの列の値に直接適用された場合、これは行われた圧縮を反映します。

pg_database_size (name) →

pg_database_size (oid) → bigint

指定された名前またはOIDを持つデータベースによって使用される合計ディスク容量を計算します。 この関数を使用するには、指定されたデータベースに対するCONNECT権限 (デフォルトで許可されています) 、またはpg_read_all_statsロールのメンバーである必要があります。

pg_indexes_size (regclass) →

指定されたテーブルにアタッチされたインデックスによって使用される合計ディスク容量を計算します。

pg_relation_size (regclass relation [, text fork] ) → bigint

指定されたリレーションの1つの「フォーク」によって使用されるディスクスペースを計算します。 (ほとんどの目的では、すべてのフォークのサイズを合計する上位レベルの関数pg_total_relation_sizeまたはpg_table_sizeを使用する方が便利です。) 1つの引数で、これはリレーションのメインデータフォークのサイズを返します。 2番目の引数を指定して、調べるフォークを指定できます。

  • mainは、リレーションのメインデータフォークのサイズを返します。

  • fsmは、リレーションに関連付けられた自由空間マップのサイズを返します。

  • vmは、リレーションに関連付けられた可視性マップのサイズを返します。

  • initは、リレーションに関連付けられた初期化フォークのサイズを返します。

pg_size_bytes (text) →

人間が読める形式のサイズ (pg_size_prettyによって返される) をバイトに変換します。

pg_size_pretty (bigint) → text

pg_size_pretty (数値) → テキスト

バイト単位のサイズを、サイズ単位 (必要に応じてバイト、kB、MB、GB、またはTB) で人間が読みやすい形式に変換します。 単位は10の累乗ではなく2の累乗であり、したがって、1kBは1024バイトであり、1MBは1024 2= 1048576バイトであり、以下同様であることに留意されたい。

pg_table_size (regclass) → bigint

指定されたテーブルで使用されるディスク領域を計算します。インデックスは除きます (ただし、TOASTテーブルがある場合は、空き領域マップ、および表示マップを含みます) 。

pg_tablespace_size (name) →

pg_tablespace_size (oid) → bigint

指定された名前またはOIDを持つテーブルスペースで使用されている合計ディスクスペースを計算します。 この関数を使用するには、現在のデータベースの既定のテーブルスペースでない限り、指定されたテーブルスペースに対するCREATE権限があるか、pg_read_all_statsロールのメンバーである必要があります。

pg_total_relation_size (regclass) → bigint

すべてのインデックスとTOASTdataを含む、指定されたテーブルによって使用される合計ディスク容量を計算します。 結果は、pg_table_size + pg_indexes_sizeに相当します。

テーブルまたはインデックスを操作する上記の関数は、regclass引数を受け入れます。これは、単にpg_classシステムカタログ内のテーブルまたはインデックスのOIDです。 ただし、regclassデータ型の入力コンバーターが作業を行うため、OIDを手動で調べる必要はありません。

データベースオブジェクトの場所関数

以下の表に示す機能は、データベースオブジェクトに関連付けられた特定のディスクファイルを識別するのに役立ちます。

pg_relation_filenode (regclass 関係) → oid

指定されたリレーションに現在割り当てられている「filenode」番号を返します。 filenodeは、リレーションに使用されるファイル名の基本コンポーネントです。 ほとんどのリレーションでは、結果はpg_classと同じです。relfilenodeですが、特定のシステムカタログではrelfilenodeはゼロであり、正しい値を取得するにはこの関数を使用する必要があります。 ビューなどのストレージを持たないリレーションが渡された場合、関数はNULLを返します。

pg_relation_filepath (regclass relation) → text

リレーションのファイルパス名全体 (データベースクラスターのデータディレクトリPGDATAに対する相対) を返します。

pg_filenode_relation (tablespace oid, filenode oid) → regclass

テーブルスペースOIDとそれが格納されているファイルノードを指定して、リレーションのOIDを返します。 これは基本的にpg_relation_filepathの逆マッピングです。 データベースのデフォルト表領域内のリレーションでは、表領域をゼロとして指定できます。 指定された値に関連付けられている現在のデータベースの関係がない場合は、NULLを返します。

照合順序管理機能

照合の管理に使用する関数を次の表に示します。

pg_collation_actual_version (oid) → text

オペレーティングシステムに現在インストールされている照合順序オブジェクトの実際のバージョンを返します。 これがpg_collationの値と異なる場合。collversionの場合、照合順序に応じたオブジェクトを再構築する必要があります。

pg_import_system_collations (regnamespace スキーマ) → integerの

オペレーティングシステムで見つかったすべてのロケールに基づいて、システムカタログpg_collationに照合順序を追加します。 これはinitdbが使用するものです。 後で追加のロケールがオペレーティングシステムにインストールされる場合、この関数を再度実行して、新しいロケールの照合順序を追加できます。 pg_collationの既存のエントリと一致するロケールはスキップされます。 (ただし、オペレーティングシステムに存在しなくなったロケールに基づく照合順序オブジェクトは、この関数によって削除されません。) schemaパラメーターは通常、pg_catalogですが、これは要件ではありません。照合順序は他のスキーマにもインストールできます。 この関数は、作成した新しい照合順序オブジェクトの数を返します。 この機能の使用はスーパーユーザーに限定されます。

パーティション化情報関数

次の表に、パーティションテーブルの構造に関する情報を提供する関数を示します。

pg_partition_tree (regclass) → setof record (rerid regclass, parentrelid regclass, isleaf boolean, level integer)

指定されたパーティションテーブルまたはパーティションインデックスのパーティションツリー内のテーブルまたはインデックスを、パーティションごとに1行ずつリストします。 提供される情報は、パーティションのOID、その直接の親のOID、パーティションがリーフであるかどうかを示すブール値、および階層内のそのレベルを示す整数を含む。 レベル値は、入力テーブルまたはインデックスの場合は0、その直接の子パーティションの場合は1、そのパーティションの場合は2などです。 関係が存在しないか、パーティションまたはパーティションテーブルでない場合は、行を返しません。

pg_partition_ancests (regclass) → setof regclass

関係自体を含む、指定されたパーティションの祖先関係をリストします。 関係が存在しないか、パーティションまたはパーティションテーブルでない場合は、行を返しません。

pg_partition_root (regclass) → regclass

指定されたリレーションが属するパーティションツリーの最上位の親を返します。 リレーションが存在しないか、パーティションまたはパーティションテーブルでない場合は、NULLを返します。

たとえば、パーティションテーブルの測定値に含まれるデータの合計サイズを確認するには、次のクエリを使用できます。

SELECT pg_size_pretty(sum(pg_relation_size (rerid))) AS total_size
 pg_partition_treeから ('measurement'); 

インデックスメンテナンス機能

次の表に、インデックスのメンテナンスタスクで使用できる機能を示します。 (これらのメンテナンスタスクは通常、自動真空によって自動的に行われます。これらの機能の使用は特別な場合にのみ必要です。) これらの関数はリカバリ中には実行できません。 これらの機能の使用は、スーパーユーザーと指定されたインデックスの所有者に制限されます。

brin_summarize_new_values (regclass インデックス) → integerの

指定されたBRINインデックスをスキャンして、インデックスによって現在要約されていないベーステーブル内のページ範囲を見つけます。そのような範囲に対して、それらのテーブルページをスキャンすることによって新しい要約インデックスタプルを作成します。 インデックスに挿入された新しいページ範囲のサマリの数を返します。

brin_summary_range (regclass インデックスbigint blockNumber) → integerをする

指定されたブロックをカバーするページ範囲を要約します (まだ要約されていない場合) 。 これは、指定されたテーブルブロック番号をカバーするページ範囲のみを処理することを除いて、brin_summarize_new_valuesに似ています。

brin_desalm_range (regclass インデックスbigint blockNumber) → voidを

指定されたテーブルブロックをカバーするページ範囲がある場合は、ページ範囲を要約するBRINインデックスタプルを削除します。

gin_clean_pending_list (regclass インデックス) →

指定されたGINインデックスの「保留」リストを、その中のエントリをメインのGINデータ構造に一括移動することによってクリーンアップします。 保留リストから削除されたページの数を返します。 引数がfastupdateオプションを無効にして構築されたGINインデックスである場合、クリーンアップは行われず、インデックスに保留リストがないため、結果はゼロになります。

汎用ファイルアクセス関数

次の表に示す関数は、サーバーをホストしているマシン上のファイルへのネイティブアクセスを提供します。 ユーザーがスーパーユーザーであるか、ロールpg_read_server_filesが付与されていない限り、データベースクラスターディレクトリおよびlog_directory内のファイルにのみアクセスできます。 クラスターディレクトリ内のファイルの相対パスと、ログファイルのlog_directory構成設定と一致するパスを使用します。

ユーザーにpg_read_file() または関連する関数のEXECUTE権限を付与すると、データベースサーバープロセスが読み取ることができるサーバー上のファイルを読み取ることができます。これらの関数は、すべてのデータベース内特権チェックをバイパスします。 これは、例えば、そのようなアクセスを有するユーザが、認証情報が格納されているpg_authidテーブルの内容を読み取ることができるとともに、データベース内の任意のテーブルデータを読み取ることができることを意味する。 したがって、これらの機能へのアクセスを許可することは慎重に検討する必要があります。

これらの関数の一部は、ファイルまたはディレクトリが存在しない場合の動作を指定するオプションのmissing_okパラメーターを受け取ります。 trueの場合、関数は必要に応じてNULLまたは空の結果セットを返します。 falseの場合、エラーが発生します。 デフォルトはfalseです。

pg_ls_dir (text dirname [, missing_ok boolean, include_dot_dirs boolean] ) → setof text

指定されたディレクトリ内のすべてのファイル (およびディレクトリおよびその他の特殊ファイル) の名前を返します。 include_dot_dirsパラメーターは、"." と ".." を結果セットに含めるかどうかを示します。デフォルトでは除外します。 これらを含めると、missing_oktrueの場合に、空のディレクトリと存在しないディレクトリを区別するのに役立ちます。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_ls_logdir () → setof record (name textsize bigintmodification timestamp with time zone) をする

サーバのログディレクトリ内の各通常ファイルの名前、サイズ、および最終変更時刻 (mtime) を返します。 ドット、ディレクトリ、およびその他の特殊ファイルで始まるファイル名は除外されます。

この関数はデフォルトでスーパーユーザーとpg_monitorロールのメンバーに制限されますが、他のユーザーにEXECUTE関数の実行を許可することもできます。

pg_ls_waldir () → setof record (name textsize bigintmodification timestamp with time zone) をする

サーバーの先行書き込みログ (WAL) ディレクトリ内の各通常ファイルの名前、サイズ、および最終変更時刻 (mtime) を返します。 ドット、ディレクトリ、およびその他の特殊ファイルで始まるファイル名は除外されます。

この関数はデフォルトでスーパーユーザーとpg_monitorロールのメンバーに制限されますが、他のユーザーにEXECUTE関数の実行を許可することもできます。

pg_ls_archive_statusdir() →setofレコード(名前 テキスト,サイズ ビギント,修正 タイムゾーンのタイムスタンプ)

サーバのWALアーカイブステータスディレクトリ (pg_wal/archive_status) 内の各通常ファイルの名前、サイズ、および最終変更時刻 (mtime) を返します。 ドット、ディレクトリ、およびその他の特殊ファイルで始まるファイル名は除外されます。

この関数はデフォルトでスーパーユーザーとpg_monitorロールのメンバーに制限されますが、他のユーザーにEXECUTE関数の実行を許可することもできます。

pg_ls_tmpdir([テーブルスペース oid] ) →setofレコード(名前 テキスト,サイズ ビギント,修正 タイムゾーンのタイムスタンプ)

指定された表領域の一時ファイルディレクトリ内の各通常ファイルの名前、サイズ、および最終変更時刻 (mtime) を返します。 tablespaceが指定されていない場合、pg_defaultのtablespaceが調べられます。 ドット、ディレクトリ、およびその他の特殊ファイルで始まるファイル名は除外されます。

この関数はデフォルトでスーパーユーザーとpg_monitorロールのメンバーに制限されますが、他のユーザーにEXECUTE関数の実行を許可することもできます。

pg_read_file (filename text [, offset bigint, length bigint [, missing_ok boolean ]] ) → text

指定されたバイトオフセットから始まり、最大で長さのバイト (ファイルの終わりに最初に到達した場合は短くなります) を返すテキストファイルのすべてまたは一部を返します。 offsetが負の場合は、ファイルの末尾を基準にします。 offsetlengthを省略した場合、ファイル全体が返されます。 ファイルから読み取られたバイトは、データベースのエンコーディングでは文字列として解釈されます。そのエンコーディングで有効でない場合、エラーがスローされます。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

pg_read_binary_file (filename text [, offset bigint, length bigint [, missing_ok boolean ]] ) → bytea

ファイルの全部または一部を返します。 この関数は、任意のバイナリデータを読み取ることができ、結果をtextではなくbyteaとして返すことを除いて、pg_read_fileと同じです。したがって、エンコードチェックは実行されません。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

convert_from関数と組み合わせて、この関数を使用して、指定されたエンコーディングでテキストファイルを読み取り、データベースのエンコーディングに変換できます。

SELECT convert_from(pg_read_binary_file('file_in_utf8.txt ') 、'UTF8');

pg_stat_file(filename テキスト[,missing_ok ブール値] ) →レコード(サイズ ビギント,アクセス タイムゾーンのタイムスタンプ,修正 タイムゾーンのタイムスタンプ,変更 タイムゾーンのタイムスタンプ,作成 タイムゾーンのタイムスタンプ,isdir ブール値)

ファイルのサイズ、最終アクセスタイムスタンプ、最終変更タイムスタンプ、最終ファイルステータス変更タイムスタンプ (Unixプラットフォームのみ) 、ファイル作成タイムスタンプ (Windowsのみ) 、およびディレクトリかどうかを示すフラグを含むレコードを返します。

この関数はデフォルトでスーパーユーザーに制限されていますが、他のユーザーにEXECUTEを許可して関数を実行できます。

アドバイザリロック関数

次の表に示す関数は、アドバイザリロックを管理します。 これらの関数の適切な使用についての詳細.

これらの関数はすべて、アプリケーション定義のリソースをロックするために使用することを目的としています。このリソースは、単一の64ビットキー値または2つの32ビットキー値によって識別できます (これらの2つのキースペースは重複しません) 。 別のセッションが同じリソース識別子に対して競合するロックをすでに保持している場合、関数は、リソースが利用可能になるまで待つか、関数に応じての結果を返します。 共有ロックは、同じリソース上の他の共有ロックと競合せず、排他ロックでのみ競合します。 ロックは、セッションレベルで (解放されるか、セッションが終了するまで保持されるように) 、またはトランザクションレベルで (現在のトランザクションが終了するまで保持されます。手動解放の規定はありません) 取得できます。 複数のセッションレベルのロック要求がスタックされるため、同じリソース識別子が3回ロックされた場合、セッション終了に先立ってリソースを解放するための3つのロック解除要求が存在する必要があります。

pg_advisory_lock (bigint キー) → void

pg_advisory_lock (key1整数key2整数) → void

排他的セッションレベルのアドバイザリロックを取得し、必要に応じて待機します。

pg_advisory_lock_shared (key bigint) → void

pg_advisory_lock_shared (key1整数key2整数) → void

共有セッションレベルのアドバイザリロックを取得し、必要に応じて待機します。

pg_advisory_unlock (bigint キー) → ブール値

pg_advisory_unlock (key1整数key2整数) → ブール値

以前に取得した排他的セッションレベルのアドバイザリロックを解放します。 ロックが正常に解放された場合、trueを返します。 ロックが保持されていない場合、falseが返され、さらに、SQL警告がサーバーによって報告されます。

pg_advisory_unlock_all () → void

現在のセッションによって保持されているすべてのセッションレベルのアドバイザリロックを解放します。 (この関数は、クライアントが不意に切断した場合でも、セッション終了時に暗黙的に呼び出されます。)

pg_advisory_unlock_shared (bigint キー) → ブール値

pg_advisory_unlock_shared (key1整数key2整数) → ブール値

以前に取得した共有セッションレベルのアドバイザリロックを解放します。 ロックが正常に解放された場合、trueを返します。 ロックが保持されていない場合、falseが返され、さらに、SQL警告がサーバーによって報告されます。

pg_advisory_xact_lock (bigint キー) → void

pg_advisory_xact_lock (key1整数key2整数) → void

排他的トランザクションレベルのアドバイザリロックを取得し、必要に応じて待機します。

pg_advisory_xact_lock_shared (key bigint) → void

pg_advisory_xact_lock_shared (key1整数key2整数) → void

共有トランザクションレベルのアドバイザリロックを取得し、必要に応じて待機します。

pg_try_advisory_lock (bigint キー) → ブール値

pg_try_advisory_lock (key1整数key2整数) → ブール値

利用可能な場合、排他的セッションレベルのアドバイザリロックを取得します。 これは、直ちにロックを取得してtrueを返すか、ロックを直ちに取得できない場合は待機せずにfalseを返します。

pg_try_advisory_lock_shared (bigint キー) → ブール値

pg_try_advisory_lock_shared (key1整数key2整数) → ブール値

利用可能な場合、共有セッションレベルのアドバイザリロックを取得します。 これは、直ちにロックを取得してtrueを返すか、ロックを直ちに取得できない場合は待機せずにfalseを返します。

pg_try_advisory_xact_lock (bigint キー) → ブール値

pg_try_advisory_xact_lock (key1整数key2整数) → ブール値

利用可能な場合、排他的トランザクションレベルのアドバイザリロックを取得します。 これは、直ちにロックを取得してtrueを返すか、ロックを直ちに取得できない場合は待機せずにfalseを返します。

pg_try_advisory_xact_lock_shared (bigint キー) → ブール値

pg_try_advisory_xact_lock_shared (key1整数key2整数) → ブール値

利用可能な場合、共有トランザクションレベルのアドバイザリロックを取得します。 これは、直ちにロックを取得してtrueを返すか、ロックを直ちに取得できない場合は待機せずにfalseを返します。