Performans

PrestaShop’ta Günlerce Açık Kalan SQL Sorguları Nasıl Teşhis Edilir?

PrestaShop’ta Günlerce Açık Kalan SQL Sorguları Nasıl Teşhis Edilir?

PrestaShop mağazalarında “MySQL çok yükleniyor” şikâyetinin nedeni çoğu zaman tek bir yavaş sorgu değil; tekrar eden filtre sorguları, kötü indeks, cron çakışması, cache yeniden üretimi veya üçüncü parti modül davranışıdır.

Teşhis sırası

  1. Process list: O anda çalışan ve bekleyen sorguları görün.
  2. Slow query log: Anlık değil tekrarlı davranışı yakalayın.
  3. EXPLAIN: Tam tablo taraması, yanlış join sırası ve kullanılmayan indeksleri inceleyin.
  4. Kaynak eşleştirme: SQL'i hangi modül/controller/cron üretiyor bulun.
  5. Tekrarlama oranı: Aynı sorgu saniyede kaç kez çalışıyor ölçün.
  6. Lock analizi: Uzun transaction veya tablo kilitlerini kontrol edin.

PrestaShop özelinde sık nedenler

  • Faceted Search filtre/cache üretimi
  • Çok büyük ps_connections, log veya arama tabloları
  • Yanlış yazılmış dashboard/istatistik modülleri
  • Her sayfa yüklemesinde toplu veri hesaplayan hook'lar
  • Cron görevinin bir önceki işlem bitmeden yeniden başlaması
  • Ürün kombinasyonu ve kategori sorgularında eksik indeks

Çözüm yaklaşımı

“Bu sorguyu KILL edelim” geçici müdahaledir. Kalıcı çözüm; sorgu kaynağını bulmak, doğru indeks/sorgu tasarımını yapmak, işi gerekiyorsa batch/queue yapısına taşımak ve cron kilidi eklemektir.