受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

53.5. pg_backend_memory_contexts #

视图pg_backend_memory_contexts显示附属于当前会话的服务器进程中的全部内存上下文。

pg_backend_memory_contexts 为每个内存上下文提供一行。

Table 53.5. pg_backend_memory_contexts

列类型

描述

name text

内存上下文的名称

ident text

内存上下文的标识信息。该字段会在 1024 字节处截断。

type text

内存上下文类型

level int4

该上下文在内存上下文层次中的层级,从 1 开始计数。上下文的层级也表示该上下文在 path 列中的位置。

path int4[]

由瞬态数字标识符组成的数组,用于描述内存上下文层次。第一个元素对应 TopMemoryContext,后续元素包含中间父上下文,最后一个元素包含当前上下文的标识符。

total_bytes int8

为该内存上下文分配的总字节数

total_nblocks int8

为该内存上下文分配的总块数

free_bytes int8

空闲空间,按字节计

free_chunks int8

空闲块总数

used_bytes int8

已用空间,按字节计


默认情况下,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 能够对应一致。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。