Execution Plan Nedir
Execution plan sorgunun nasıl çalışacağını(index mi kullanacak yoksa tabloyu tamamen tarayacak mı? Ne çeşit bir join yapacak? nested loops, merge joins, hash joins vb) ve sorgudaki her bölümün sorguya maliyet oranını belirleyen(örneğin index seek yani index üzerinde ihtiyacı olan kaydı tarama yapmadan direk bulması gibi. Örneğin bu index seek işleminin sorguya maliyetide %1 olabilir) yol haritasıdır. SQL Server’ a gönderdiğiniz bir TSQL sorgusu yavaş çalıştığında ilk bakılacak yer sorgunun execution plan’ıdır. Estimated execution plan ve actual execution plan olarak iki çeşidir vardır. Estimated execution plan sorguyu çalıştırmadan, çalıştırıldığı takdirde kullanacağı execution plan’ı tahmin eder. Actual execution plan ise sorgu çalıştırıldıktan sonra gerçekten kullandığı execution plan’ı ifade eder. Execution plan’ı anlamanın en iyi yolu bir örnek üzerinden gitmek olacaktır. SSMS’i açıyoruz ve AdventureWorks2014 veritabanında Person.Adress Tablosuna tıkladıktan sonra new query deyip aşağıdaki sorguyu yazıyoruz.
SELECT * FROM Person.Address
Daha sonra aşağıdaki resimdeki işaretli yere tıklıyoruz.
Yukarıda gördüğünüz gibi sorgu çalışmadı fakat çalıştırdığı takdirde Clustered Index Scan yapacağınız ve bu işlemin sorguya maliyetinin %100 olduğunu tahmin etti.
Aşağıda ok ile işaretli yere tıklayarak F5’e basalım ve sorgumuzu çalıştıralım.
Gördüğünüz gibi sorgu çalıştı kayıtlar geldi ve Execution plan’ı oluşturdu.
Yukarıdaki resimdeki altı çizili Execution Plan sekmesine tıklayıp actual execution plan’ı görebiliriz.
Bizim sorgumuzda aşağıda gördüğünüz gibi estimated ve actual execution plan aynı sonucu verdi.
“SQL Server’da Index Kavramı ve Performansa Etkisi“, “SQL Server’da İstatistik Kavramı ve Performansa Etkisi” ve “Execution Planı Yorumlayarak Performans İyileştirmesi Yapmak” isimli makalelerimde ilginizi çekebilir. Ayrıca “SQL Server’da Join Türleri” isimli makaleme de göz atmak isteyebilirsiniz.
Örnek bir sorgu üstünden execution plan sonucu yapilmasi gereken aksiyonları ( missing index vs. ) örnek bir senaryo üzerinden izah etseniz faydalı olur kanaatindeyim.
Merhabalar,
Bir sonraki makale’nin konusu olabilir.