Как мне записать частоту и время последнего использования хранимой процедуры? - PullRequest
3 голосов
/ 30 июля 2009

Я хочу знать, как часто выполняется набор хранимых процедур и когда они использовались в последний раз.

Я думаю о добавлении вызовов в начало каждой хранимой процедуры в базе данных для вставки / обновления таблицы со следующей схемой:

SprocName    ExecCount   LastExec
----------------------------------
GetCompany   434         2009-03-02
ExportDist   2           2008-01-05

Очевидно, что добавление кода в каждый sproc не совсем продуктивно.

Есть ли встроенная функция SQL Server 2005, которая может помочь?

Или есть лучший способ?

Ответы [ 5 ]

3 голосов
/ 30 июля 2009

Есть блог MSDN здесь , в котором говорится о различных вариантах. Для SQL 2005 это сводится к:

  • Выполните трассировку на стороне сервера, помните, что это не легкий вариант делать
  • Измените ваши хранимые процедуры, чтобы включить ведение журнала выполнения
2 голосов
/ 30 июля 2009

Вы можете проверить содержимое таблицы sys.dm_exec_query_stats.

Вот сообщение в блоге для чего-то подобного: http://blog.sqlauthority.com/2008/03/22/sql-server-2005-find-highest-most-used-stored-procedure/

1 голос
/ 30 июля 2009

Самый точный метод для достижения вашей цели - использовать настраиваемое решение для ведения журнала, встроенное в ваши хранимые процедуры.

Вы можете использовать динамические административные представления SQL Server (DMV), как и другие, чтобы получить приблизительное представление о запросах / хранимых процедурах, выполняемых на вашем сервере, однако реальная цель этих DMV состоит в том, чтобы предоставить понимание настройки производительности, а не предоставление контрольного журнала.

Например: Как определить самые дорогостоящие запросы SQL Server, используя DMV

Данные, предоставленные соответствующими DMV (sys.dm_exec_query_stats и т. Д.), Содержат только подробные сведения о планах запросов, которые в настоящее время хранятся в кэше планов SQL Server, и поэтому могут предоставлять только ограниченную перспективу активности сервера.

Электронная документация по SQL Server: sys.dm_exec_query_stats

1 голос
/ 30 июля 2009

Я не отвечаю с большим опытом, но я думаю, что другие опции, показанные здесь, такие как трассировка, могут снизить производительность, в то время как добавление строки в верхней части каждого процесса будет очень легким во время выполнения (даже тяжелая работа в зависимости на сколько у тебя).

Я бы построил один новый SP, который регистрирует и принимает в качестве параметра имя вызывающего SP и имеет логику, куда вставлять или обновлять. Таким образом, вы добавляете только одну строку к другому SP и передаете их имя в качестве параметра.

1 голос
/ 30 июля 2009

Я нашел тему на форуме, в которой говорится об использовании sys.syscacheobjects для выяснения?!?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...