51.5. pg_backend_memory_contexts#
51.5. pg_backend_memory_contexts #
Представление pg_backend_memory_contexts отображает все контексты памяти процесса сервера, присоединенного к текущей сессии.
pg_backend_memory_contexts содержит одну строку
для каждого контекста памяти.
Таблица 51.5. 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];
Общее табличное выражение (Common Table Expression) используется для того, чтобы идентификаторы контекста в столбце path совпадали при двух обращениях к представлению.