Как кто-то сказал в комментариях, pg_stat_statements - это способ получить статистику. Поместите это в свой postgresql.conf
:
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
Затем выполните этот запрос:
CREATE EXTENSION pg_stat_statements;
После этого этот пример запроса (скопированный из документов, указанных выше) даст вам статистику для 5 самых популярных запросов из всех баз данных :
SELECT query, calls, total_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_time DESC LIMIT 5;
Если вам нужны результаты для одной базы данных , вам нужно отфильтровать, по dbid
которой вы можете получить pg_database
по имени БД. Добавьте это предложение WHERE в запрос выше:
WHERE dbid = (select oid from pg_database where datname = 'YOUR_DB_NAME')
Вы также можете сделать соединение.
При тестировании этого может быть хорошей идеей исключить запросы к самим таблицам статистики / схемы, например:
AND query not similar to '%( pg_|information_schema)%'
Существует множество бесплатных и коммерческих инструментов, которые могут помочь вам визуализировать данные.