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_backend_memory_contexts могут читать только суперпользователи или пользователи c правами роли 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 при двух обращениях к представлению, используется общее табличное выражение.