pg_stat_kcache. Статистика об операциях чтения и записи на уровне файловой системы
Версия: 2.3.0.
В исходном дистрибутиве установлено по умолчанию: да.
Связанные компоненты: pg_stat_statements.
Схема размещения:
ext.
Модуль собирает статистику о реальных операциях чтения и записи, выполненных уровнем файловой системы. Таким образом, возможности расширения могут использоваться для сбора статистики по системным метрикам.
Модуль предоставляется в виде расширения и требует установки расширения pg_stat_statements.
Модуль создает несколько объектов:
pg_stat_kcacheview;pg_stat_kcache_detailview;pg_stat_kcache_resetfunction;pg_stat_kcachefunction.
Доработка
В расширении pg_stat_kcache удалены параметры pg_stat_kcache.track и pg_stat_kcache.track_planning. Вместо них используются аналогичные параметры из расширения pg_stat_statements:
pg_stat_statements.track = 'top'— типы запросов (top/nested), по которым хранится статистика:top,all,none;pg_stat_statements.track_planning = 'off'— сохранять отдельно статистику этапа планирования.
Расширение pg_stat_kcache было доработано в части удаления статистических записей, относящихся к редко выполняемым операторам.
Ранее возникала проблема несоответствия между записями, собираемыми расширениями pg_stat_statements и pg_stat_kcache: в статистике одного расширения нередко отсутствовали записи, имеющиеся в другом, что затрудняло диагностику проблем производительности, поскольку текст запроса фиксируется исключительно в статистике pg_stat_statements.
Для устранения данной проблемы ответственность за удаление записей из статистики pg_stat_kcache возложена на расширение pg_stat_statements: при удалении записей из собственной статистики также удаляются соответствующие записи из статистики pg_stat_kcache.
Несмотря на принятые меры, в исключительных случаях расхождения записей возможны, поэтому функция pg_stat_kcache_reset вместо полного сброса всех записей осуществляет удаление только тех записей, которые отсутствуют в статистике pg_stat_statements. Функция pg_stat_statements_reset удаляет абсолютно все записи из статистики pg_stat_statements, а также сопоставимые записи из статистики pg_stat_kcache.
Ограничения
Ограничения отсутствуют.
Установка
Установка расширения может быть произведена в процессе развертывании СУБД Pangolin при использовании параметраpg_stat_kcache_is_enable: true (документ «Руководство по установке», раздел «Автоматизированная установка»).
Ручная установка
-
С помощью метакоманды
\dxв psql проверьте, что расширение pg_stat_statements присутствует в списке:\dxВ выводе найдите строку с
pg_stat_statements:Name | Version | Schema | Description
--------------------+---------+------------+------------------------------------------------------------------------
pg_stat_statements | 1.8 | ext | track planning and execution statistics of all SQL statements executed -
Создайте расширение
pg_stat_kcache. Пропишите расширение в параметр предзагружаемых библиотек:shared_preload_libraries = 'pg_stat_statements,pg_stat_kcache'ВажноРасширение
pg_stat_kcacheдолжно идти послеpg_stat_statements, иначе база не запустится. -
Активируйте расширение. Установите расширение в схему
ext:CREATE EXTENSION pg_stat_kcache schema ext;Настройте пользователя:
GRANT EXECUTE ON FUNCTION ext.pg_stat_kcache_reset TO profile_tuz;
GRANT EXECUTE ON FUNCTION ext.pg_stat_kcache TO profile_tuz;Настроить права пользователя
as_admin:GRANT EXECUTE ON FUNCTION ext.pg_stat_kcache_reset to as_admin;
GRANT EXECUTE ON FUNCTION ext.pg_stat_kcache to as_admin;Проверьте значение параметра
pg_stat_statements.track: значение по умолчаниюtop. -
Обновите
pg_stat_kcacheдо новой версии.Новые версии
pg_stat_kcacheбудут содержать скрипт миграции (когда это возможно). Так, в случае обновления необходимо будет установить новые файлы расширения и обновить расширение:ALTER EXTENSION pg_stat_kcache UPDATE;
Настройка
Для хранения счетчиков требуется некоторая общая память, поэтому модуль должен быть загружен при запуске PostgreSQL.
Параметр pg_stat_kcache.linuz_hz = -1 позволяет установить частоту аппаратных прерываний (тиков CPU) для компенсации ошибок выборки. Для данного расширения можно явно указать, какой параметр задан в системе (параметр CONFIG_HZ ядра linux). По умолчанию установлено значение -1 — это означает, что расширение попытается автоматически рассчитать эту частоту при старте.
Использование модуля
Просмотр детальной информации об операциях
-
Создайте таблицу:
CREATE TABLE big_table (id integer, val text);Вывод:
CREATE TABLE -
Выполните запросы для изменения статистики:
INSERT INTO big_table
SELECT i, repeat('line ' || i,50)
FROM generate_series(1,1000000) i;Вывод:
INSERT 0 1000000SELECT i, i * 2 AS doubled_value FROM generate_series(1,1000000) i;Часть вывода:
i | doubled_value
----+--------------
1 | 2
2 | 4
3 | 6
4 | 8
5 | 10 -
Посмотрите статистику последних выполненных запросов:
SELECT * FROM pg_stat_kcache_detail;Пример вывода:
-[ RECORD 1]---------------------------------------------------------------------------------
query | INSERT INTO big_table SELECT i, repeat(? || i,?) FROM generate_series(?,?) i;
datname | <database_name>
rolname | <role_name>
reads | 0
reads_blks | 0
writes | 933814272
writes_blks | 107753
user_time | 7.592
system_time | 0.86
-[ RECORD 2]---------------------------------------------------------------------------------
query | SELECT i, i * 2 AS doubled_value FROM generate_series(?,?) i;
datname | <database_name>
rolname | <role_name>
reads | 0
reads_blks | 0
writes | 0
writes_blks | 0
user_time | 5.032
system_time | 0.088
Получен ряд показателей, среди которых информация о том, сколько времени заняло выполнение запроса, сколько данных было записано на диск и сколько использовано ресурсов процессора (CPU).
Ссылки на документацию разработчика
Дополнительно поставляемый модуль pg_stat_kcache: https://powa.readthedocs.io/en/latest/components/stats_extensions/pg_stat_kcache.html.