Share via


Sorgu Planı Önbelleğe Alma (Entity SQL)

Bir sorgu yürütme girişiminde bulunulsa, sorgu işlem hattı sorgu planı önbelleğini arar ve tam sorgunun zaten derlenip kullanılamadığını görür. Bu durumda, yeni bir plan oluşturmak yerine önbelleğe alınmış planı yeniden kullanabilir. Sorgu planı önbelleğinde eşleşme bulunmazsa sorgu derlenip önbelleğe alınır. Sorgu, Entity SQL metni ve parametre koleksiyonu (adlar ve türler) tarafından tanımlanır. Tüm metin karşılaştırmaları büyük/küçük harfe duyarlıdır.

Yapılandırma

Sorgu planı önbelleğe alma, aracılığıyla EntityCommandyapılandırılabilir.

aracılığıyla EntityCommand.EnablePlanCachingsorgu planını önbelleğe almayı etkinleştirmek veya devre dışı bırakmak için bu özelliği veya falseolarak true ayarlayın. Daha fazla kullanılma olasılığı düşük olan tek tek dinamik sorgular için plan önbelleğe alma özelliğini devre dışı bırakmak performansı artırır.

aracılığıyla EnablePlanCachingsorgu planı önbelleğini etkinleştirebilirsiniz.

Genel olarak dinamik sorgulardan kaçınılmalıdır. Aşağıdaki dinamik sorgu örneği SQL ekleme saldırılarına karşı savunmasızdır çünkü kullanıcı girişini doğrudan doğrulama olmadan alır.

var query = "SELECT sp.SalesYTD FROM AdventureWorksEntities.SalesPerson as sp WHERE sp.EmployeeID = " + employeeTextBox.Text;

Dinamik olarak oluşturulan sorguları kullanıyorsanız, yeniden kullanılma olasılığı düşük olan önbellek girişlerinde gereksiz bellek tüketimini önlemek için sorgu planı önbelleğini devre dışı bırakmayı göz önünde bulundurun.

Statik sorgularda ve parametreli sorgularda sorgu planı önbelleğe alma, performans avantajları sağlayabilir. Statik sorgu örneği aşağıda verilmiştir:

var query = "SELECT sp.SalesYTD FROM AdventureWorksEntities.SalesPerson as sp";

Sorguların sorgu planı önbelleği tarafından düzgün bir şekilde eşleştirilmesi için aşağıdaki gereksinimlere uymaları gerekir:

  • Sorgu metni, tercihen sabit bir dize veya kaynak olan sabit bir desen olmalıdır.

  • EntityParameter veya ObjectParameter kullanıcı tarafından sağlanan bir değerin geçirilmesi gereken her yerde kullanılmalıdır.

Sorgu planı önbelleğindeki yuvaları gereksiz yere kullanan aşağıdaki sorgu desenlerinden kaçınmalısınız:

  • Metinde büyük harfe dönüşür.

  • Boşlukta yapılan değişiklikler.

  • Değişmez değerlerde yapılan değişiklikler.

  • Açıklamaların içindeki metinde yapılan değişiklikler.

Ayrıca bkz.