Slow log'u kısa süreli tam yakala ve pt-query-digest ile analiz et
MySQLPerformansKomut
-- Gecici tam yakalama (ornegin 10 dakika); yalniz yeni baglantilar etkilenir
SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log';
SET GLOBAL log_slow_extra = ON;
SET GLOBAL long_query_time = 0;
SET GLOBAL slow_query_log = ON;
-- ... sonra normal esige don
SET GLOBAL long_query_time = 1;
# Shell: toplam sureye gore ilk 10 sorgu
pt-query-digest --limit=10 --order-by=Query_time:sum --noversion-check /var/lib/mysql/slow.log > /tmp/digest.txt
pt-query-digest --since='2026-10-08 09:00:00' --until='2026-10-08 10:00:00' --filter '$event->{db} && $event->{db} eq "shop"' --report-format=profile --noversion-check /var/lib/mysql/slow.logNe yapar?
long_query_time=0 ile kısa bir pencerede tüm sorguları yakalar; pt-query-digest bunları fingerprint'e göre gruplayıp toplam / ortalama / p95 süre, taranan satır ve örnek sorguyla sıralı rapor üretir.
Ne zaman kullanılır?
performance_schema digest'in yetmediği durumlarda: tam sorgu metni ve gerçek parametrelerle analiz, deploy öncesi / sonrası karşılaştırma, başka sunucuda offline inceleme.
Dikkat
long_query_time oturum başında global'den kopyalanır; connection pool'daki mevcut bağlantılar yeni eşiği yeniden bağlanana kadar görmez. long_query_time=0 yoğun sunucuda saniyede binlerce satır yazar; disk alanını ve IO'yu izle, pencereyi kısa tut ve sonra mutlaka geri al. Analiz için dosyayı production dışına kopyala. pt-query-digest'i çalıştıran kullanıcının dosyayı okuma izni olmalı (dosya 640, mysql:mysql).
İlgili
- En pahalı sorguları bul (performance_schema digest)
- Ş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)
- EXPLAIN ANALYZE ve optimizer trace ile kötü planı çöz