Execution Plan
Yürütme planı (Execution Plan) — Database optimizer'ın bir SQL sorgusunu hangi access path, join order ve operator'lerle çalıştıracağını gösteren fiziksel yürütme stratejisi.
Veri Tabanı Bağlamı
Index scan, full scan, nested loop, hash join ve sort maliyetleri cardinality tahminine dayanır. Actual rows ile estimated rows farkı plan hatasının önemli göstergesidir.
İşlem ve Depolama Sınırı
Explain plan gerçek runtime istatistiklerini her zaman göstermez; bind, adaptive davranış ve cache durumu yürütme sırasında farklılık yaratabilir.
İlişkili Veri Tabanı Kavramları
- Cardinality Estimation
- Index Selectivity
- Prepared Statement
- Query Optimizer
Tahmin Edilen Plan ile Gerçek Yürütme Aynı Veri Değildir
Optimizer planı bir maliyet modelinin sonucudur; özellikle cardinality tahmini yanlışsa doğru fiziksel operatörün seçilme olasılığı da düşer. Bu yüzden yalnız "index kullanmış mı?" sorusu çoğu performans incelemesi için yetersizdir. Join sırası, access path ve operator seçiminin yanında tahmini satır ile gerçek satır sayısı arasındaki sapma izlenmelidir.
Oracle örneğinde EXPLAIN PLAN ile plan tablosuna yazılan tahmin ile DBMS_XPLAN.DISPLAY_CURSOR üzerinden çalışan cursor ve runtime istatistiklerini incelemek aynı şey değildir. Bind değerleri, adaptive plan davranışı ve cache durumu yürütme bağlamını değiştirebilir. Oracle'ın DBMS_XPLAN/execution-plan belgeleri bu ayrımı doğrudan destekler: Oracle SQL Tuning Guide. İlgili kavram: Cardinality Estimation.