En pahalı sorguları bul (performance_schema digest)
MySQLPerformansKomut
SELECT SCHEMA_NAME AS db,
LEFT(DIGEST_TEXT, 80) AS query,
COUNT_STAR AS calls,
ROUND(SUM_TIMER_WAIT / 1e12, 2) AS total_sec,
ROUND(AVG_TIMER_WAIT / 1e9, 2) AS avg_ms,
ROUND(QUANTILE_95 / 1e9, 2) AS p95_ms,
ROUND(100 * SUM_TIMER_WAIT / SUM(SUM_TIMER_WAIT) OVER (), 1) AS pct_total,
ROUND(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0)) AS rows_exam_per_call,
ROUND(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0)) AS rows_sent_per_call,
SUM_NO_INDEX_USED AS no_index,
SUM_CREATED_TMP_DISK_TABLES AS tmp_disk,
LAST_SEEN
FROM performance_schema.events_statements_summary_by_digest
WHERE SCHEMA_NAME IS NOT NULL
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 20;
-- Sunucu genelinde en cok beklenen wait event'ler
SELECT events, total, total_latency, avg_latency FROM sys.waits_global_by_latency LIMIT 10;Ne yapar?
Normalize edilmiş sorguları toplam süreye göre sıralar; çağrı sayısı, ortalama ve p95 süre, toplam içindeki pay, çağrı başına okunan / dönen satır, index kullanmayan çalıştırma ve diske düşen temp tablo sayısını verir. İkinci sorgu zamanın hangi wait'lerde (IO, lock, redo) harcandığını gösterir.
Ne zaman kullanılır?
CPU / IO yükü arttığında veya 'veritabanı yavaş' şikâyetinde ilk bakılacak yer; slow log kapalıyken de çalışır.
Dikkat
Değerler son restart'tan veya TRUNCATE TABLE performance_schema.events_statements_summary_by_digest'ten bu yana kümülatiftir; anlık durumu görmek için iki görüntü alıp farkına bak. Tablo performance_schema_digests_size satırla sınırlıdır; dolarsa yeni sorgular DIGEST'i NULL olan tek satırda toplanır. DIGEST_TEXT performance_schema_max_digest_length (1024) byte'ta kesilir. Zamanlar picosaniyedir. rows_exam_per_call / rows_sent_per_call oranının yüksek olması eksik index'in en net işaretidir.
İlgili
- Şu anda ne çalışıyor: aktif oturumlar, süre, lock ve transaction (sys.session)
- 'Waiting for table metadata lock' teşhisi ve asıl bloklayanı bulma
- InnoDB deadlock analizi ve tüm deadlock'ları loglama
- Uzun açık transaction'lar ve history list length (purge gecikmesi)
- Slow log'u kısa süreli tam yakala ve pt-query-digest ile analiz et
- EXPLAIN ANALYZE ve optimizer trace ile kötü planı çöz