Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сгруппировать тексты запросов полученные профайлером  [new]
vi0
Member

Откуда:
Сообщений: 265
Добрый день

Есть задача найти часто выполняемые запросы, например, профайлером
В результате трассировки имеем тексты одинаковых запросов отличающихся только параметрами

например

exec sp_executesql N'SELECT TOP 1
T1._IDRRef, T1._Code, FROM _Reference77 T1 WITH(NOLOCK)
WHERE (T1._IDRRef = @P1)',N'@P1 varbinary(16)',[b]0x3B8038A364B18B43B44C0B2E92F6398C[/b]

exec sp_executesql N'SELECT TOP 1
T1._IDRRef, T1._Code, FROM _Reference77 T1 WITH(NOLOCK)
FROM _Reference77 T1 WITH(NOLOCK)
WHERE (T1._IDRRef = @P1)',N'@P1 varbinary(16)',[b]0x70EC207244857240B941DAECF45D53F8[/b]


Сохраняем трассировку в таблицу
Нужно сгруппировать строки этой трассировки, чтобы посчитать количество этих запросов
Есть ли отработанная методика для подобного анализа таблиц трассировок или нужно индивидуально подходить к каждому тексту запроса с использованием LIKE и т.д.?
14 апр 14, 20:45    [15881772]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать тексты запросов полученные профайлером  [new]
-
Guest
про трассировку не знаю, но для решения задачи можно попробовать такой метод:
http://msdn.microsoft.com/en-us/library/cc645887(v=sql.100).aspx
14 апр 14, 21:54    [15882045]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать тексты запросов полученные профайлером  [new]
vi0
Member

Откуда:
Сообщений: 265
проанализировал dm_exec_query_stats и dm_exec_text_query_plan
вижу, что время жизни плана в кэше небольшое, и сколько именно времени живет план неясно
и в документации этого не вижу
причем нахожу задаваемый вопрос про время жизни и на этом форуме, но без ответов

я так понимаю, чтобы анализировать определенный период, а не то, что находится в кэше правильнее собирать планы трассировкой. (используя профайлер или как то иначе)
но тогда какие события нужно анализировать?
14 апр 14, 22:47    [15882242]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать тексты запросов полученные профайлером  [new]
vi0
Member

Откуда:
Сообщений: 265
В этой статье от 2008г написано, что непростое это дело:
К сожалению, самый надежный метод довольно сложен и предусматривает отслеживание всех выполненных запросов к серверу с последующий группировкой по подписям. При этом текст запроса с реальными значениями параметров заменяется на замещающий текст, который позволяет выбрать однотипные запросы с разными значениями. Подписи запроса создать тяжело, так что это сложный процесс. Ицик Бен-Ган (Itzik Ben-Gan) описывает решение с использованием пользовательских функций в среде CLR и регулярных выражений в своей книге «Microsoft SQL Server 2005 изнутри: запросы T-SQL».
Существует еще один метод, куда более простой, но не столь надежный. Можно положиться на статистику всех запросов, которая хранится в кэше плана выполнения, и опросить их с использованием динамических административных представлений.
http://technet.microsoft.com/ru-ru/magazine/2007.11.sqlquery.aspx

Может уже есть инструменты для подобного анализа?
15 апр 14, 08:31    [15882986]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать тексты запросов полученные профайлером  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
vi0,

Сделайте группировку в запросе, используя сохраненную трассу и функцию - fn_trace_gettable
15 апр 14, 14:11    [15885033]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать тексты запросов полученные профайлером  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Алексей Куренков
Сделайте группировку в запросе, используя сохраненную трассу и функцию - fn_trace_gettable
Так ТС и спрашивает, как сделать группировку :-)
vi0
Есть ли отработанная методика для подобного анализа таблиц трассировок или нужно индивидуально подходить к каждому тексту запроса с использованием LIKE и т.д.?
Да, индивидуально, для запроса или похожей группы запросов.
15 апр 14, 17:12    [15886455]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать тексты запросов полученные профайлером  [new]
G02
Guest
http://support.microsoft.com/kb/944837
15 апр 14, 17:16    [15886494]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить