В этой статье описаны действия по настройке и использованию мониторинга производительности БД с помощью расширения pg_stat_statements.
Настройка
- Открыть в текстовом редакторе конфигурационный файл postgresql.conf
sudo nano /etc/postgresql/[версия]/main/postgresql.conf
(путь может отличаться в зависимости от ОС и версии PostgreSQL)
- Найти строку с параметром
shared_preload_libraries
- Добавить параметру значение
pg_stat_statements
- Если других расширений нет
shared_preload_libraries = 'pg_stat_statements'
- Если уже есть расширения
shared_preload_libraries = 'pgaudit, pg_stat_statements'
- Сохранить изменения в файле
- Перезапустить службу PostgreSQL
sudo systemctl restart postgresql
- Подключиться к БД и создать расширение
CREATE EXTENSION pg_stat_statements;
- Проверить работу
SELECT * FROM pg_stat_statements LIMIT 1;
Использование
Для получения статистики нужно подключиться к БД и выполнить один из запросов.
| Code Block |
|---|
| language | sql |
|---|
| title | Топ запросов по времени выполнения |
|---|
| collapse | true |
|---|
|
SELECT
query,
calls,
total_exec_time,
mean_exec_time,
rows,
100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 20; |
| Code Block |
|---|
| language | sql |
|---|
| title | Топ запросов по использованию памяти |
|---|
| collapse | true |
|---|
|
SELECT
query,
calls,
shared_blks_read + shared_blks_written + temp_blks_read + temp_blks_written AS total_blocks,
(shared_blks_read + shared_blks_written + temp_blks_read + temp_blks_written) * 8 / 1024 AS total_mb
FROM pg_stat_statements
ORDER BY total_blocks DESC
LIMIT 20; |