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.
Доработка
Доработка не проводилась.
Ограничения
Ограничения отсутствуют.
Установка
Установка расширения может быть произведена в процессе развертывании СУБД Pangolin при использовании параметра pg_stat_kcache_is_enable: true (документ «Руководство по установке», раздел «Автоматизированная установка при помощи Ansible-скриптов»).
Ручная установка
-
С помощью метакоманды
\dxв psql проверьте, что расширениеpg_stat_statementsприсутствует в списке:\dxВывод:
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_kcache.is_enabled. -
Обновите
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.