DBAtlas · Veritabanı operasyon atlası

En pahalı sorguları bul (pg_stat_statements: toplam ve ortalama süre)

PostgreSQLPerformans

Komut

-- Toplam süreye göre: sunucunun zamanını en çok harcayanlar
SELECT queryid,
       calls,
       round(total_exec_time::numeric, 1) AS total_ms,
       round(mean_exec_time::numeric, 2) AS mean_ms,
       round(stddev_exec_time::numeric, 2) AS stddev_ms,
       round((100 * total_exec_time / sum(total_exec_time) OVER ())::numeric, 1) AS pct_total,
       rows / NULLIF(calls, 0) AS rows_per_call,
       left(regexp_replace(query, '\s+', ' ', 'g'), 120) AS query
FROM pg_stat_statements
WHERE dbid = (SELECT oid FROM pg_database WHERE datname = current_database())
ORDER BY total_exec_time DESC
LIMIT 20;

-- Çağrı başına ortalama süreye göre: tek tek yavaş olanlar
SELECT queryid,
       calls,
       round(mean_exec_time::numeric, 2) AS mean_ms,
       round(max_exec_time::numeric, 2) AS max_ms,
       round(mean_plan_time::numeric, 2) AS mean_plan_ms,
       left(regexp_replace(query, '\s+', ' ', 'g'), 120) AS query
FROM pg_stat_statements
WHERE calls >= 50
ORDER BY mean_exec_time DESC
LIMIT 20;

Ne yapar?

Bağlı olunan veritabanında toplam çalışma süresine göre sunucunun zamanını en çok harcayan normalize edilmiş sorguları ve toplam içindeki paylarını; ikinci sorguyla çağrı başına en yavaş olanları listeler.

Ne zaman kullanılır?

CPU/IO yükü arttığında veya 'veritabanı yavaş' şikâyetinde ilk bakılacak yer; tuning'e nereden başlanacağını belirlemek için.

Dikkat

pg_stat_statements, shared_preload_libraries'e eklenip sunucu restart edilmeden ve ilgili veritabanında CREATE EXTENSION çalıştırılmadan veri toplamaz. Değerler son reset'ten bu yana kümülatiftir. stddev_ms'in mean_ms'e göre yüksek olması planın veya veri dağılımının çağrıdan çağrıya değiştiğine işaret eder. mean_plan_time yalnızca pg_stat_statements.track_planning = on iken dolar (varsayılan off; açmak ek yük getirir). Diğer kullanıcıların sorgu metinlerini görmek için superuser veya pg_read_all_stats rolü gerekir.

DBAtlas'ta aç →

İlgili