Pazartesi , 20 Kasım 2017

Stored Procedure’lerin Çağrılma Sayısının Bulunması

SQL Server üzerinde optimizasyon çalışması yapılmak istendiğinde en önemli adımlardan bir tanesi de çok fazla çağrılan Stored Procedure ve Function gibi SQL Server objelerinin bulunup bunlar üzerinde optimizasyon çalışması yapılmasıdır.Aslında doğrudan bir Stored Procedure’un kaç defa çağrıldığı bilgisi SQL Server’da tutulmamasına rağmen bildiğiniz gibi Stored Procedure ve Function gibi objelerin Execution planları SQL serverda saklanmaktadır. Bu durumda istediğimiz bir Stored Procedure ile ilişkilendirilmiş execution plan ya da planların kaç defa çağrıldığı bilgisi bize bir stored procedure’un kaç defa çağrıldığı bilgisini elde ederken yardımcı olabilir. Bunun için aşağdıaki gibi Buffer’daki execution planlara erişebileceğimiz sys.dm_exec_cached_plans DMV ile bize execution planların sorgularını veren sys.dm_exec_sql_text DMF birleştirerek istediğimiz sonuca ulabiliriz.

Select DB_NAME(st.dbid) DatabaseName,
OBJECT_SCHEMA_NAME(st.objectid,dbid) +'.'+OBJECT_NAME(st.objectid,dbid) StoredProcedure,
MAX(cp.usecounts) ExecutionCount
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
WHERE DB_NAME(st.dbid) IS NOT NULL AND cp.objtype = 'proc'
GROUP BY
DB_NAME(st.dbid),
OBJECT_SCHEMA_NAME(st.objectid,dbid) +'.'+OBJECT_NAME(st.objectid,dbid)
ORDER BY MAX(cp.usecounts) DESC
Yukardaki sorguyu çalıştırıken bazı noktalara dikkat etmek gerekiyor. Örneğin bir Stored Procedure üzerinde DDL işlemlerinden(Create,Alter,Drop) biri gerçekleştiğinde Buffer’dan Execution Plan ya da planları silinecektir. Ayrıca bir diğer unutulmaması gereken nokta bir Stored Procedure’un birden fazla Execution planı olabilir. Bu durumunda göz önüne alınıp incelenmesi gerekir.

Hakkında ismailadar

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>