2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14
开发版本: devel

53.5. pg_backend_memory_contexts #

视图 pg_backend_memory_contexts 显示了连接到当前会话的服务器进程的所有内存上下文。

pg_backend_memory_contexts 为每个内存上下文包含一行。

表 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_read_all_stats 角色权限的角色才能读取 pg_backend_memory_contexts 视图。

由于内存上下文在查询运行时会被创建和销毁,因此 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 在视图的两次评估之间匹配。

提交更正

如果您在文档中发现任何不正确的内容、与您对特定功能的体验不符的内容或需要进一步澄清的内容,请使用 此表单 报告文档问题。