Ad Hoc İş Yükleri İçin Optimizasyon Sağlayarak SQL Performansınızı Artırabilirsiniz

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…

February 9, 2022 by Aryasoft IT

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 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.

Ad Hoc İş Yükleri İçin Optimize Et seçeneğini nasıl açabiliriz?

Optimize for Ad Hoc Workloads’ı SSMS kullanarak şu adımları izleyerek etkinleştirebilirsiniz:

  1. Object Explorer’da, server’da sağa tıklayın
  2. advanced page sayfasına gidin ve – “Optimize for ad hoc Workloads” özelliğini true olarak seçin.

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!