Themenersteller #1
pt-query-digest ile Sorgu Raporlama

Giriş ve amaç

pt-query-digest, MySQL/MariaDB performans analizinde en sık başvurulan araçlardan biridir. Özellikle slow log veya general log üzerinden toplanan sorgu verisini işleyerek hangi sorguların en çok kaynak tükettiğini, hangi indekslerin verimsiz kullanıldığını ve bekleme sürelerini net bir şekilde gösterir. Bu raporlama, sorunlu alanları tanımlamanıza ve iyileştirme adımlarını önceliklendirmenize olanak tanır. Kullanımı basit görünse de derinlemesine analiz için birkaç kritik ayrım gerekir: kayıt nereden geliyor, hangi ölçütler üzerinden sıralama yapılacak ve hangi parametrelerle sonuçlar yorumlanacak.

Çalışma mantığı ve temel akış

pt-query-digest, öncelikle log dosyasını parse eder ve sorguları normalize eder. Ardından her sorgu için toplam çalışma süresi, çalışma sıklığı, getirilen sonuç sayısı ve bekleme süreleri gibi metrikleri hesaplar. En çok zaman alan sorgular, en çok CPU tüketen sorgular ve bloklamaya yol açan sorgular ayrı listelerde gösterilir. Örneğin slow log üzerinden çalışıyorsan, query_time ve lock_time toplamlarıyla sorgu kalemlerini sıralayabilir, potansiyel indeks eksikliklerini veya tablolar arası join stratejilerini işaret edebilirsin.

Kullanım adımları ve pratik ipuçları

  • Kaynak: Slow logu veya genel logu toplayarak başlayın; log formatını iyi bilmek hata payını azaltır.
  • Komut basamakları:

  • pt-query-digest slow_query.log > rapor.txt ile temel rapor.
  • pt-query-digest --type=query,duration slow_query.log > detay.txt ile tür bazlı ayrım.
  • —db ve—user gibi filtrelerle çevresel bağlamı daraltın; örneğin sadece belirli bir veritabanına odaklanın.
  • Raporu periyodik olarak çalıştırıp eğilimleri izleyin; zaman içindeki değişimler hangi sürüm veya konfigürasyon değişiklerinden etkileniyor görebilirsiniz.

  • Öne çıkan metrikler: total, count, min/max/avg/median süreler; rows examined; scNd zamanları; dup anahtar kullanımı gibi alt metrikler tabloya dökülür.
  • Yorumlama ipuçları: Sorguların tekrar eden yapıları ve hangi sütunlar üzerinde indekslenmiş veya edilmemiş oldukları kritik ipuçları verir. Büyük tablolar üzerinde uzun taramalar yapan sorguları, gereksiz filtrelerden arındırmayı veya doğru birleşim (join) stratejisini uygulanmayı önerir.


Bir örnek durum

Bir satış veritabanında ay sonu raporları yoğunlaştığında bazı sorgular 5-10 kata varan bekleme oluşturabilir. Slow logu topladıktan sonra pt-query-digest ile “SELECT ... FROM sales WHERE sale_date BETWEEN ... AND ...” türünde basit aramaların dengesiz kullanımlarını tespit ettim; diğeri ise join koşullarında kullanılmayan sütunların indexlenmesiyle çözüldü. Sonuçta toplam süre ve lock süreleri anlamlı şekilde düştü ve yoğun dönemlerde sistem daha stabil çalışmaya başladı.

Kapanış

pt-query-digest ile raporlamaya başlamak, performans çalışmasının ölçülebilir bir temel kazanmasını sağlar. Veritabanı ve sorgu tasarımında somut adımlar atarken raporun belirlediği kavramsal odaklar üzerinden ilerlemek, iyileştirme etkisini net ölçümlemeye olanak tanır. Bu yöntemi kendi projelerinize nasıl uyarladığınızı, hangi log akışını kurduğunuzu ve elde ettiğiniz tipik sonuçları anlatır mısınız?

Sie müssen angemeldet sein, um zu antworten.

Benutzer, die dieses Thema gerade ansehen (Gesamt: 2, Mitglieder: 2, Gäste: 0)
Gesamt: 2 (mitglieder: 2, gäste: 0)
0 Zitate ausgewählt