Ad Hoc İş Yükleri İçin Optimizasyon Sağlayarak SQL Performansınızı Artırabilirsiniz Ad hoc iş yükleri için optimize etme seçeneği nedir? SQL Server’da bir sorgu yazdığınızda, sorgu iyileştiricinin bu sorguyu nasıl yürüteceğine dair bir “Plan” oluşturması gerekir. Genellikle, SQL Sunucuları bu planı daha sonraki bir tarihte tekrar kullanılmak üzere plan önbelleğine kaydeder. Ad Hoc İş Yükleri İçin…
Ad hoc iş yükleri için optimize etme seçeneği nedir?
SQL Server’da bir sorgu yazdığınızda, sorgu iyileştiricinin bu sorguyu nasıl yürüteceğine dair bir “Plan” oluşturması gerekir.
Genellikle, SQL Sunucuları bu planı daha sonraki bir tarihte tekrar kullanılmak üzere plan önbelleğine kaydeder.
Ad Hoc İş Yükleri İçin Optimize Et, tek kullanımlık sorgular için plan önbelleğinin davranışını değiştiren, sunucu düzeyinde bir seçenektir.
Bunu açtığınızda, SQL Server sorgu ilk kez çalıştırıldığında tüm planı saklamaz ve bunun yerine bir plan saptaması saklayarak plan şişkinliği dediğimiz şeyi azaltır.
Bu, önbellekte kaplanan tek seferlik sorguların boyutunu azaltır ve yeniden kullanılabilir planların önbellekte daha uzun süre kalmasına olanak tanır.
Bu harika çünkü bu planlardan bazıları asla tekrar kullanılamayacak.
Etkinleştirmeli miyiz?
İş yükünüz gerçekten çok sayıda ad hoc sorgu içeriyorsa (her yürütmede farklı ifadeler), Optimize for Ad hoc Workloads’ı etkinleştirmek belki de en iyi seçeneğinizdir.
Aşağıdaki sorguyu kullanarak ad hoc planınızın ve Toplam Plan Önbelleğinizin boyutunu kontrol edebilirsiniz:
SELECT AdHoc_Plan_MB, Total_Cache_MB,
AdHoc_Plan_MB*100.0 / Total_Cache_MB AS ‘AdHoc plan%’
FROM (
SELECT SUM(CASE
WHEN objtype = ‘adhoc’
THEN size_in_bytes
ELSE 0 END) / 1048576.0 AdHoc_Plan_MB,
SUM(size_in_bytes) / 1048576.0 Total_Cache_MB
FROM sys.dm_exec_cached_plans) P
Ad hoc plan önbelleğiniz toplam Plan Önbelleğinin %15-30’u kadarsa, Optimize for Ad Hoc Workloads’u etkinleştirmek SQL sunucunuz için faydalı olabilir.
Ancak parametreleştirilmemiş sorgular olduğunda Optimize for Ad hoc Workloads’u etkinleştirmek kesinlikle yardımcı olmaz, bu orijinal sorgular yine de oluşturulmaya devam eder.
Zorunlu parametreleştirme ile ilgili birincil sorun, parametre sniffing dediğimiz şeydir .
Varsayılan ayar olarak parametreleştirme önerilmez. Ancak bu, yararlı olmadığı anlamına gelmez. Semptomları tedavi etmektense asıl nedeni bulmak sizin için her zaman daha iyidir.
Optimize for Ad Hoc Workloads’ı SSMS kullanarak şu adımları izleyerek etkinleştirebilirsiniz:
Ayrıca, değişikliği uygulamak için T-SQL kullanarak aşağıdaki sorguyu çalıştırabilirsiniz:
SP_CONFIGURE ‘Show Advanced Options’, 1
GO
RECONFIGURE
GO
SP_CONFIGURE ‘optimize for ad hoc workloads’, 1
GO
RECONFIGURE
GO
Not: Ad hoc iş yükleri için optimizasyonun etkinleştirilmesi yalnızca yeni planları etkiler. Zaten plan önbelleğinde bulunan planlar etkilenmez.
Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!