pg_backend_memory_contexts #视图 pg_backend_memory_contexts 显示了连接到当前会话的服务器进程的所有内存上下文。
pg_backend_memory_contexts 为每个内存上下文包含一行。
表 53.5. pg_backend_memory_contexts 列
|
列 类型 描述 |
|---|
|
内存上下文的名称 |
|
内存上下文的标识信息。此字段最多截断为 1024 字节。 |
|
内存上下文的类型 |
|
上下文在内存上下文层次结构中的 1 基级别。上下文的级别也显示了该上下文在 |
|
用于描述内存上下文层次结构的瞬时数值标识符数组。第一个元素是 |
|
为该内存上下文分配的总字节数 |
|
为该内存上下文分配的总块数 |
|
空闲空间(字节) |
|
空闲块的总数 |
|
已用空间(字节) |
默认情况下,只有超级用户或具有 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 在视图的两次评估之间匹配。