Saklı yordam kullanımını izleme


19

SQL Server Profiler kullanmanın yanı sıra, hangi saklı yordamların kullanıldığını izlemenin herhangi bir yolu var mı, yoksa en azından son yürütüldüğünde?


4
Her zaman plan önbelleğine bakabilirsiniz. SQL verileri bu verileri sonsuza kadar izlemez çünkü meta veriler hızla büyür ve pahalı hale gelir.
JNK

Yanıtlar:


17

Saklı Yordam kullanımı hakkında oldukça iyi bir fikir edinmek için plan önbelleğine bakabilirsiniz. Bu sorguyu ele alalım, örneğin:

select
    db_name(st.dbid) as database_name,
    object_name(st.objectid) as name,
    p.size_in_bytes / 1024 as size_in_kb,
    p.usecounts,
    st.text
from sys.dm_exec_cached_plans p
cross apply sys.dm_exec_sql_text(p.plan_handle) st
where p.objtype = 'proc'
and st.dbid = db_id('SomeDatabase')
order by p.usecounts desc

Bu size usecountsönbelleğe alınan saklı yordamları verecektir SomeDB.

Not: Plan önbelleği yürütme planlarını içerir. Bu planların bu şekilde muhafaza edilmesinin birçok faktör vardır. Bu ne kullanıldığına ve ne sıklıkta kullanıldığına dair iyi bir fikir verirken, kesinlikle saklı prosedürlerin toplamı ve ne sıklıkta / ne zaman yürütüldüğü kesinlikle değildir.

Plan Önbelleği Hakkında BOL Referansı


4
Bunun yalnızca sp'nin son zamanlarda oldukça çalıştırıldığını ve burada olmayan procslar hakkında hiçbir bilgi vermediğini unutmayın. Üç aylık raporların arkasındaki proclar gibi şeyler nadiren çalıştırılıyor ancak kullanılıyor. Yani temelde, bu sadece db hit uygulamalar araştırma için bir liste verir.
HLGEM

1
@HLGEM Kesinlikle. Cevabımda bu noktayı açıklığa kavuşturmaya çalıştım.
Thomas Stringer

Bunu belirli bir tarih aralığı için yapmak mümkün müdür? (örneğin son gün / ay, vb.)?
Jose Parra

Bu sorgunun, değiştirilmiş ve daha sonra yürütülmeyen saklı yordam için bir satır döndürmeyeceğini unutmayın.
Axel2D

10

last_execution_timeHer saklı yordam hakkında bilgi içerir yanı sıra, bu bir göz atabilirsiniz .

    SELECT DB_NAME(database_id)
    ,OBJECT_NAME(object_id,database_id)
    ,cached_time
    ,last_execution_time
    ,execution_count
FROM sys.dm_exec_procedure_stats

Bu tho uyarısı var. Bu istatistikler yalnızca son veritabanı yürütüldüğünden beri korunur. Günde bir kez bir masaya arşivleyecek bir iş yazmakla meşgulüm.
earthling42

@ earthling42, bunu günlük olarak bir masaya arşivleyen bir iş yazdınız mı?
Alex Chung

@Alex Chung - maalesef buna hiç yaklaşmadım. Bu yazının tarihinden kısa bir süre sonra MS-SQL dışı projelere taşındı. Tho zor olmamalı mıydı? Eğer ilgilenirseniz sizinle çalışmaktan mutluluk duyarım.
earthling42
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.