Sorgu Optimizasyonu (Query Optimization) Nedir?
İngilizce: Query Optimization
Sorgu optimizasyonu, SQL sorgularını daha az okuma, doğru indeks ve uygun yürütme planıyla hızlandırma sürecidir.
Sorgu Optimizasyonu (Query Optimization) Nedir?
Sorgu optimizasyonu, veritabanının aynı sonucu daha az satır okuyarak, daha az bellek kullanarak ve daha uygun join sırasıyla üretmesini hedefler. Sorun çoğu zaman SQL cümlesinin doğru çalışmaması değil, büyüyen veriyle birlikte pahalı çalışmaya başlamasıdır.
Nasıl Analiz Edilir?
İlk adım sorgunun yürütme planını okumaktır. PostgreSQL’de EXPLAIN ve EXPLAIN ANALYZE, hangi indeksin kullanıldığını, kaç satır okunduğunu, join türlerini ve beklenen-gerçek maliyet farkını gösterir. Yavaş sorgu logları, APM araçları ve veritabanı metrikleri darboğazı bulmaya yardımcı olur.
Yaygın İyileştirmeler
- Filtre ve join kolonlarına uygun veritabanı indeksleme eklemek
- Gereksiz
SELECT *kullanımını azaltmak - Büyük tablolar için sayfalama, arşivleme veya partition tasarlamak
- N+1 sorgu problemlerini ORM seviyesinde çözmek
- Çok pahalı raporları önceden hesaplanmış tablo veya materialized view ile beslemek
Dikkat Edilecekler
Her yavaş sorgu indeksle çözülmez. İstatistiklerin güncel olmaması, yanlış veri modeli, geniş transaction kapsamı veya stored procedure içindeki döngüler de performansı bozabilir. SQL optimizasyonu yapılırken üretim verisine yakın hacimde ölçüm almak gerekir; küçük test verisi çoğu sorunu gizler.
İlgili Terimler
Veritabanı indeksleme, tabloda aranan satırlara daha hızlı ulaşmak için seçili kolonlarda ek veri yapıları oluşturur.
SQLSQL, ilişkisel veritabanlarında tabloları sorgulamak, değiştirmek ve raporlamak için kullanılan standart veri işleme dilidir.
Stored ProcedureStored procedure, veritabanında saklanan ve parametreyle çağrılan SQL bloğudur; tekrarlanan işlemleri veri katmanında tutar.