Homepage (/) Performans Raporu:
Sorun: Index kullanılmıyor, full table scan yapılıyor.
Çözüm: Composite index ekle: (category_id, is_active, parent_product_id, deleted_at, sort_order)
Sorun: JSON field'da LIKE arama yapılıyor. Index çalışmıyor!
Çözüm: Virtual column oluştur veya full-text search kullan (Meilisearch zaten var!)
Sorun: JSON slug arama. Her seferinde 800ms+
Çözüm: Slug için ayrı column ekle (slug_tr, slug_en) veya generated column kullan
Sorun: Session tablosu şişmiş olabilir. Index kontrol edilmeli.
Çözüm: Session cleanup job çalıştır, index kontrol et
| Query Pattern | Tekrar Sayısı | Ort. Süre | Etki |
|---|---|---|---|
shop_currencies WHERE currency_id = 2 |
1,440x | 2.17ms | Kritik Her ürün için! |
settings_values WHERE setting_id = 59 |
703x | 5.79ms | Kritik WhatsApp setting |
settings WHERE key = 'site_title' |
687x | 2.90ms | Kritik Her sayfa render |
shop_categories WHERE category_id = 1 |
402x | 2.38ms | Yüksek Her ürün için! |
tenants WHERE id = 2 |
222x | 53.54ms | Kritik Tenant yavaş! |
with('currency') ile eager loading yapılmalı veya currency cache'lenmeli.
Beklenen Kazanç: ~3-4 saniye (1440 query → 1 query)
Beklenen Kazanç: 500ms+ per query
Alternatif: Meilisearch zaten var! Arama için JSON query yerine Meilisearch kullan.
Beklenen Kazanç: 11,075ms → ~50ms (221x hızlanma)
Sorun: setting('site_title') her çağrıldığında database query atıyor
Sorun: Redis'de cache kontrol ediliyor ama hit olmuyor
ResponseCache middleware'i var mı kontrol et| Optimizasyon | Mevcut | Hedef | Kazanç |
|---|---|---|---|
| N+1 Query (Currency) | 1440 x 2.17ms = 3,124ms | 1 query x 2ms = 2ms | ~3 saniye |
| Settings Cache | 687 x 5.79ms = 3,978ms | 1 query = 6ms | ~4 saniye |
| JSON Query Optimize | ~500ms per query | ~5ms per query | 100x |
| Database Index | 11,075ms | ~50ms | 221x |
| TOPLAM (Homepage) | 2,440ms | ~200ms | 12x HIZLANMA |
app/helpers.php içinde setting() fonksiyonunu yukarıdaki gibi optimize etphp artisan cache:clear çalıştırwith('currency') ekleALGORITHM=INPLACE, LOCK=NONE kullan