1. Eager Loading ile N+1 Sorgu Problemi Çözme
Eager loading, ilişkili modelleri önceden yükleyerek veritabanına olan istek sayısını azaltır. Bu sayede, her bir ilişki için ayrı bir sorgu çalıştırmak yerine tek bir sorgu ile verileri alabilirsiniz.
Örneğin, aşağıdaki gibi bir kod yazdığınızda:
$posts = Post::with('comments')->get();
Bu kod, her bir post için `comments` ilişkisini sorgulamak yerine, yalnızca iki sorgu çalıştırarak verileri alır: birincisi postları, ikincisi ise tüm yorumları. Bu küçük değişiklik bile, uygulamanızın performansında büyük fark yaratabilir.
2. Select ile Gereksiz Veriyi Eleyin
Laravel’de, `select` metodunu kullanarak sadece gerekli alanları çekebilirsiniz:
$users = DB::table('users')->select('id', 'name', 'email')->get();
Bu sayede, gereksiz verileri çekmekten kaçınarak daha hızlı bir sorgu elde edersiniz. Ayrıca, sadece gerekli alanları almak, bellek kullanımını da azaltacaktır.
3. Veritabanı İndeksleri Kullanma
Örneğin, `users` tablosunda `email` alanına sık sık sorgu yapıyorsanız, aşağıdaki gibi bir indeks oluşturabilirsiniz:
Schema::table('users', function (Blueprint $table) {
$table->index('email');
});
Bu işlem, veritabanına yapılan sorguları hızlandırır ve uygulamanızın performansını önemli ölçüde artırır.
4. Limit ve Pagination Kullanarak Veri Miktarını Azaltma
Örneğin, sayfalama ile sadece belirli bir sayıda kayıt alabilirsiniz:
$posts = Post::paginate(10);
Bu sayede yalnızca gerekli kadar veri alınır ve uygulamanızın veritabanı üzerindeki yükü azaltılır.
5. Raw Sorgular ile Performans Artışı
Örneğin:
$users = DB::select('SELECT * FROM users WHERE status = ?', ['active']);
Raw SQL sorguları, ORM’lerden daha hızlı olabilir çünkü direkt olarak veritabanına gönderilir ve daha az işlem yapılır.
6. Veritabanı Sorgu Cache Kullanma
Örneğin, aşağıdaki gibi bir sorguyu cache'leyebilirsiniz:
$users = DB::table('users')->cache(60)->get();
Bu kod, `users` tablosundaki verileri 60 dakika boyunca önbelleğe alır. Bu şekilde her sorguda veritabanını tekrar sorgulamak yerine, önbellekten veri çekilir.
7. Sorguları Zamanlamak ve Debugging
Örneğin, aşağıdaki kodla veritabanı sorgularının sürelerini görebilirsiniz:
DB::listen(function ($query) {
logger($query->sql);
logger($query->time);
});
Bu yöntemle, hangi sorguların ne kadar süre aldığını izleyebilir ve performans sorunlarını tespit edebilirsiniz.
Sonuç: Veritabanı Performansını Artırın, Uygulamanızın Hızını Katlayın!
Şimdi, Laravel'in sunduğu bu güçlü araçları kullanarak veritabanı sorgularınızı hızlandırın ve uygulamanızın performansını zirveye taşıyın!