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_entry_count

1–10000

100

Требуется перезагрузка БД

Максимальное количество записей в хеш-таблице Shared Pool

shared_pool_partition_count

1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

8

Требуется перезагрузка БД

Количество партиций в хеш-таблице Shared Pool

enable_shared_pool_for_masking

on/off

on

Можно менять в рамках сессии

Включение или выключение использования Shared Pool для переиспользования маскированных текстов запросов

enable_shared_pool_for_tracing_plans

on/off

on

Можно менять в рамках сессии

Включение или выключение использования Shared Pool для переиспользования сериализованных планов запросов

enable_shared_pool_local_cache

on/off

off

Можно менять в рамках сессии

Включение или выключение кеша содержимого Shared Pool в памяти процесса. Кеш позволяет снизить contention при обращении к shared_pool

Диагностика#

Расширение shared_pool_view содержит два представления, с помощью которых можно анализировать состояние Shared Pool:

  • shared_pool_overview

  • shared_pool_list

Представление shared_pool_overview#

Список столбцов представления shared_pool_overview:

Столбец

Описание

capacity_elems

Максимальное количество элементов в Shared Pool, равно значению параметра shared_pool_entry_count

entries_used

Количество занятых элементов Shared Pool

entries_free

Количество свободных элементов Shared Pool

bytes_used

Количество общей памяти, используемой для хранения объектов Shared Pool

load_factor

Отношение entries_used к capacity_elems

access_count

Количество обращений к Shared Pool

hit_rate

Отношение чтений из Shared Pool к access_count

Представление shared_pool_overview всегда возвращает одну строку.

Представление shared_pool_list#

Список колонок представления shared_pool_list:

Столбец

Описание

query_id

64-битный целочисленный идентификатор записи в Shared Pool

data_preview

текстовая копия хранимого содержимого элемента Shared Pool

data_len

Размер данных элемента Shared Pool в байтах

partition

Номер партиции, к которой относится данный элемент

Использование модуля#

Функции включены по умолчанию, дополнительные действия не требуются.

Выключение функциональности#

  1. Выключите параметры 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
    
  2. Перезапустите СУБД Pangolin:

    pg_ctl restart