pg_backend_memory_contexts #
La vista pg_backend_memory_contexts muestra todos los contextos de memoria
del proceso del servidor acoplado a la sesión actual.
pg_backend_memory_contexts contiene una fila por cada contexto de memoria.
Table 53.5. pg_backend_memory_contexts Columns
Tipo de columna Descripción |
|---|
Nombre del contexto de memoria |
Información de identificación del contexto de memoria. Este campo se trunca a 1024 bytes |
Tipo del contexto de memoria |
El nivel (basado en 1) del contexto en la jerarquía de contextos de memoria. El nivel de un contexto también muestra la posición de ese contexto en la columna |
Array de identificadores numéricos transitorios para describir la jerarquía de contextos de memoria. El primer elemento es para |
Total de bytes asignados para este contexto de memoria |
Número total de bloques asignados para este contexto de memoria |
Espacio libre en bytes |
Número total de fragmentos (chunks) libres |
Espacio usado en bytes |
Por defecto, la vista pg_backend_memory_contexts solo puede ser leída por superusuarios o roles con los privilegios del rol pg_read_all_stats.
Dado que los contextos de memoria se crean y destruyen durante la ejecución de una consulta, los identificadores almacenados en la columna path pueden ser inestables entre múltiples invocaciones de la vista en la misma consulta. El ejemplo siguiente demuestra un uso eficaz de esta columna y calcula el número total de bytes utilizados por CacheMemoryContext y todos sus hijos:
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];
La expresión de tabla común (Common Table Expression) se utiliza para garantizar que los ID de contexto en la columna path coincidan entre ambas evaluaciones de la vista.