Как я могу узнать, сколько запросов в секунду выполняет моя база данных Postgres?
Как я могу узнать, сколько запросов в секунду выполняет моя база данных Postgres?
Ответы:
Используйте этот запрос, чтобы прочитать общее количество транзакций, выполненных во всех базах данных:
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
Если вы хотите один и тот же счетчик только для одной базы данных, используйте:
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
Чтобы рассчитать TPS (количество транзакций в секунду), выполните запрос несколько раз и рассчитайте разницу во временном интервале.
Для этого есть готовые инструменты, одним из которых является http://bucardo.org/wiki/Check_postgres
Дополнительная информация: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
Обновление: Конрад исправил мое неправильное понимание его вопроса. Целью было подсчитывать запросы, а не транзакции.
Как считать запросы?
Способ 1
Используйте pg_stat_statements contrib.
Способ 2
Включите полную регистрацию запросов за репрезентативный период времени.
Чтобы включить полное ведение журнала, для PostgreSQL 9.0 - 9.3 измените следующие настройки в postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
Если вы хотите увидеть также запрос продолжительности, вы можете установить log_min_duration_statement = 0
вместо из log_statement = all
. Это очень полезно для настройки запросов.
Затем перезагрузите конфигурацию (перезапустите или HUP) и соберите достаточно журнала для оценки трафика.
Примечание: ни один из методов не будет включать запросы, встроенные в пользовательские функции.