Как проверить / узнать запросы с наибольшим прогоном


9

Я хотел бы собрать статистику по самым высоким запросам в моей базе данных.

Для этого мне нужно знать, как я могу отслеживать запросы, чтобы я мог создавать представления или материализованные представления для кеширования результатов самых высоких запросов, поскольку у меня большая БД.


1
Вы проверяли здесь ?
Нельц


Из любопытства, насколько большой большой? Кроме того, под «максимальным прогоном» вы подразумеваете наиболее часто выполняемые или совокупно самые дорогие запросы? И, с простой точки зрения, вы ничего не пожалеете в этом отношении.
Дезсо

@ dezso: это 300 000 строк на главной таблице. Самое дорогое было бы приоритетом, но я также хочу знать наиболее часто используемые.
мамасай

Как уже сказал @a_horse_with_no_name .. расширение pg_stat_statements, вероятно, то, что вам нужно.
Джоиши Бодио

Ответы:


8

Как кто-то сказал в комментариях, 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)%'

Существует множество бесплатных и коммерческих инструментов, которые могут помочь вам визуализировать данные.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.