pg_stat_kcache. Статистика об операциях чтения и записи на уровне файловой системы#
Версия: 2.2.1.
В исходном дистрибутиве установлено по умолчанию: да.
Связанные компоненты: 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_profile UPDATE;
Настройка#
Для хранения счетчиков требуется некоторая общая память, поэтому модуль должен быть загружен при запуске PostgreSQL.
Параметр pg_stat_kcache.linuz_hz = -1 позволяет установить частоту аппаратных прерываний (тиков ЦПУ) для компенсации ошибок выборки. Для данного расширения можно явно указать, какой параметр задан в системе (параметр 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.