pg_backend_memory_contexts #视图pg_backend_memory_contexts显示附属于当前会话的服务器进程中的全部内存上下文。
pg_backend_memory_contexts 为每个内存上下文提供一行。
Table 50.68. 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 能够对应一致。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。