shared_pool_view. Кеширования результатов маскирования и сериализации
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: нет.
Схема размещения:
ext.
Разработано СУБД Pangolin.
Расширение разработано в рамках функциональности кеширования результатов маскирования и сериализации и предоставляет возможность просмотра Shared Pool.
Функции расширения и добавленные представления изначально доступны только создателю расширения и суперпользователю. Чтобы другие пользователи могли ими пользоваться, необходимо выдать им соответствующие права.
Функции
Для административного управления Shared Pool предусмотрены две функции расширения shared_pool_view:
shared_pool_reset()
Функция удаляет все записи Shared Pool.
Синтаксис:
shared_pool_reset()
Входные параметры:
Отсутствуют.
Возвращаемое значение:
Функция возвращает количество удаленных элементов.
shared_pool_delete()
Функция удаляет одну запись по ключу (pool_id).
Синтаксис:
shared_pool_delete(pool_id)
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
pool_id | bigint | Идентификатор пула |
Возвращаемое значение:
Функция возвращает значение 1, если запись была удалена, или значение 0, если записи с переданным ключом не существовало.
Пример использования:
SELECT sum(shared_pool_delete(pool_id))
FROM (
SELECT pool_id
FROM shared_pool_list
WHERE data_preview LIKE 'SELECT data%'
) AS t;
В примере выполняется удаление всех записей, чей предварительный просмотр данных (data_preview) начинается с 'SELECT data'. Функция возвращает суммарное количество удаленных элементов.
Доработка
Доработка не проводилась.
Ограничения
Ограничения отсутствуют.
Установка
При наличии прав администратора СУБД включение модуля возможно выполнить вручную:
CREATE EXTENSION shared_pool_view SCHEMA ext;
Настройка
Конфигурационные параметры
Параметр | Допустимые значения | Значение по умолчанию | Установка | Описание |
|---|---|---|---|---|
|
|
| Требуется перезагрузка БД | Максимальное количество записей в хеш-таблице Shared Pool |
|
|
| Требуется перезагрузка БД | Количество партиций в хеш-таблице Shared Pool |
|
|
| Можно менять в рамках сессии | Включение или выключение использования Shared Pool для переиспользования маскированных текстов запросов |
|
|
| Можно менять в рамках сессии | Включение или выключение использования Shared Pool для переиспользования сериализованных планов запросов |
|
|
| Можно менять в рамках сессии | Включение или выключение кеша содержимого Shared Pool в памяти процесса. Кеш позволяет снизить |
|
| Включает или выключает использование Shared Pool для переиспользования планов запросов. Можно менять в рамках сессии | Логические: |
|
|
| Включает или выключает бинарную сериализацию планов в Shared Pool. Когда отключено, выполняется встроенная в PostgreSQL строковая сериализация ( | Логические: |
|
|
| Задает максимальный размер хранящегося в общей памяти отображения |
|
|
Диагностика
Расширение shared_pool_view содержит два представления и функцию, с помощью которых можно анализировать состояние Shared Pool:
shared_pool_overview;shared_pool_list;shared_pool_explain_plan().
Представление shared_pool_overview
Список столбцов представления shared_pool_overview:
Столбец | Описание |
|---|---|
| Максимальное количество элементов в Shared Pool, равно значению параметра |
| Количество занятых элементов Shared Pool |
| Количество свободных элементов Shared Pool |
| Количество общей памяти, используемой для хранения объектов Shared Pool |
| Отношение |
| Количество обращений к Shared Pool |
| Отношение чтений из Shared Pool к |
Представление shared_pool_overview всегда возвращает одну строку.
Представление shared_pool_list
Список колонок представления shared_pool_list:
Столбец | Описание |
|---|---|
| 64-битный целочисленный идентификатор записи в Shared Pool |
| текстовая копия хранимого содержимого элемента Shared Pool |
| Размер данных элемента Shared Pool в байтах |
| Номер партиции, к которой относится данный элемент |
Функция shared_pool_explain_plan()
Функция shared_pool_explain_plan(pool_id bigint) по pool_id возвращает текстовое представление плана, хранящегося в ячейке Shared Pool по этому идентификатору.
Пример использования:
postgres=# SELECT abalance FROM pgbench_accounts WHERE aid = 13;
abalance
----------
0
(1 row)
postgres=# SELECT filler FROM pgbench_accounts WHERE abalance <> 0;
filler
--------
(0 rows)
postgres=# SELECT pool_id, last_access FROM shared_pool_list WHERE data_type = 'query plan';
pool_id | last_access
---------------------+-------------
8435959827479901312 | 10
-841318586528298585 | 11
6427153288372725900 | 6
924569139818791405 | 5
3266497213927765679 | 9
(5 rows)
postgres=# SELECT shared_pool_explain_plan(8435959827479901312);
shared_pool_explain_plan
------------------------------------------------------------------------------------
Gather (cost=1000.00..11801.27 rows=1 width=85) +
Workers Planned: 2 +
-> Parallel Seq Scan on pgbench_accounts (cost=0.00..10801.17 rows=1 width=85)+
Filter: (abalance <> $1) +
(1 row)
postgres=# SELECT shared_pool_explain_plan(3266497213927765679);
shared_pool_explain_plan
----------------------------------------------------------------------------------------------
Index Scan using pgbench_accounts_pkey on pgbench_accounts (cost=0.42..8.44 rows=1 width=4)+
Index Cond: (aid = $1) +
(1 row)
Использование модуля
Функции включены по умолчанию, дополнительные действия не требуются.
Выключение функциональности
-
Выключите параметры
enable_shared_pool_for_maskingиenable_shared_pool_for_tracing_plansв конфигурационном файлеpostgresql.conf/postgres.yml:enable_shared_pool_for_masking = off
enable_shared_pool_for_tracing_plans = off -
Перезапустите СУБД Pangolin:
pg_ctl restart