pg_backend_memory_contexts #
pg_backend_memory_contextsビューは、現在のセッションにアタッチされているサーバプロセスのすべてのメモリコンテキストを表示します。
pg_backend_memory_contextsの各1行が各々のメモリコンテキストを格納します。
表53.5 pg_backend_memory_contexts列
列 型 説明 |
|---|
メモリコンテキストの名前 |
メモリコンテキストの識別情報。このフィールドは1024バイトで切り捨てられる |
メモリコンテキストの種別 |
メモリコンテキスト階層内の、1から始まるコンテキストのレベル。
コンテキストのレベルは、 |
メモリコンテキスト階層を説明する一時的な数値識別子の配列。
最初の要素は |
このメモリコンテキストで確保した合計バイト数 |
このメモリコンテキストで確保した合計ブロック数 |
バイト単位の空き領域 |
空きチャンクの数 |
バイト単位の使用領域 |
デフォルトではpg_backend_memory_contextsビューはスーパーユーザか、pg_read_all_statsロールの権限を持つユーザのみが読み取り専用でアクセスできます。
メモリコンテキストは問い合わせの実行中に作成および破棄されるため、path列に格納されている識別子は、同じ問い合わせでビューを複数回呼び出しても一定にならない可能性があります。
以下の例は、この列の効果的な使用方法を示し、CacheMemoryContextとそのすべての子が使用する合計バイト数を計算しています。
WITH memory_contexts AS (
SELECT * FROM pg_backend_memory_contexts
)
SELECT sum(c1.total_bytes)
FROM memory_contexts c1, memory_contexts c2
WHERE c2.name = 'CacheMemoryContext'
AND c1.path[c2.level] = c2.path[c2.level];
共通テーブル式を使用して、path列のコンテキストIDがビューの両方の評価で一致するようにします。