pg_stat_kcache. Статистика об операциях чтения и записи на уровне файловой системы
Версия: 2.2.1.
В исходном дистрибутиве установлено по умолчанию: да.
Связанные компоненты: pg_stat_statements.
Схема размещения:
ext
.
Модуль собирает статистику о реальных операциях чтения и записи, выполненных уровнем файловой системы. Таким образом, возможности расширения могут использоваться для сбора статистики по системным метрикам.
Модуль предоставляется в виде расширения и требует установки расширения pg_stat_statements
.
Модуль создает несколько объектов:
pg_stat_kcache
view;pg_stat_kcache_detail
view;pg_stat_kcache_reset
function;pg_stat_kcache
function.
Доработка
Доработка не проводилась.
Ограничения
Ограничения отсутствуют.
Установка
Установка расширения может быть произведена в процессе развертывании СУБД 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 1000000
SELECT 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.