Veritabani performansini maksimize etme
Veritabanini optimize ettik. 87 tabloda toplam 24 yeni index olusturduk. Sik kullanilan sorgular artik cok daha hizli.
Yavass sorgulari tespit edip yeniden yazdik. N+1 problemlerini cozduk. Eager loading ekledik.
Sonuc: Ortalama sorgu suresi 45ms'den 8ms'ye dustu. 5 kat hizlandi.
Kitabin sonundaki indeks gibi. "Ahmet" kelimesini bulmak icin tum kitabi okumak yerine indekse bakip direkt sayfaya gidiyorsun.
foreach(playlist as song) song.artist
Playlist::with('songs.artist')->get()
Dashboard > Veritabani > Slow Queries
Dashboard > Veritabani > Stats
Dashboard > Veritabani > Tables
Dashboard > Veritabani > Indexes
Veritabanı sorgusu geldiğinde MySQL query optimizer devreye girer. Index kullanımı, tablo tarama yöntemi ve join stratejileri belirlenir.
MySQL SELECT * FROM songs WHERE artist_id = 5 sorgusunu parse eder, AST (Abstract Syntax Tree) oluşturur.
Query Optimizer mevcut index'leri kontrol eder. idx_artist_id varsa onu kullanmaya karar verir.
Index bir B-Tree yapısıdır. O(log n) karmaşıklıkla aranır, full scan'e göre çok hızlı.
Index'ten bulunan row_id'ler ile asıl tablo verisi clustered index'ten çekilir.
Laravel with('artist') ile ikinci sorgu hazırlar: SELECT * FROM artists WHERE id IN (1,2,3)
Eloquent sonuçları Collection'a dönüştürür. İlişkiler setRelation() ile modellere bağlanır.
Veritabanı için hızlı arama yapısı. Sorgu performansını artırır.
Her satır için ayrı sorgu atma hatası. Eager loading ile çözülür.
İlişkili verileri tek sorguda getirme. N+1 çözümü.
Sorgunun nasıl çalıştığını gösteren MySQL komutu.