Postgres veritabanımın saniyede kaç sorguyu yürüttüğünü nasıl anlayabilirim?
Postgres veritabanımın saniyede kaç sorguyu yürüttüğünü nasıl anlayabilirim?
Yanıtlar:
Tüm veritabanlarında yürütülen toplam işlem sayısını okumak için bu sorguyu kullanın :
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
Aynı sayacı yalnızca bir veritabanı için istiyorsanız, şunu kullanın:
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
TPS'yi (saniyedeki işlemler) hesaplamak için, sorguyu birkaç kez çalıştırın ve zaman aralığı içindeki farkı hesaplayın.
Bunun için hazır araçlar var, bunlardan biri http://bucardo.org/wiki/Check_postgres
Daha fazla bilgi: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
Güncelleme: Konrad sorusunu yanlış anladığımı düzeltti. Amaç, işlemleri değil, sorguları saymaktı.
Sorguları nasıl sayabilirim?
Yöntem 1
Kullanım pg_stat_statements contrib.
Yöntem 2
Temsili bir süre boyunca sorguların tam günlüğünü etkinleştirin.
Tam günlük kaydını etkinleştirmek için PostgreSQL 9.0 - 9.3 için aşağıdaki ayarları değiştirin: postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
Ayrıca sorgu süresini görmek istiyorsanız, ayarlayabilirsiniz log_min_duration_statement = 0 yerine ait log_statement = all. Bu, sorgu ayarlama için çok kullanışlıdır.
Ardından config'i yeniden yükleyin (yeniden başlatın veya HUP) ve trafiği tahmin etmek için yeterli günlük toplayın.
Not: Her iki yöntem de kullanıcı tanımlı işlevlere katıştırılmış sorguları içermez.