У меня трассировка SQL Profiler сохранена в таблицу в SQL Server.
Я хочу выполнить анализ суммы / среднего значения / количества CPU / Чтений / Длительности для запросов в трассировке.Но большинство данных профилировщика записывает обращения к хранимым процедурам с параметрами uniqueidentifer
:
EXECUTE GetTransactionCounts @BankGUID = '{231281D7-F6C2-4EAE-98AE-E9196D8016F0}', @SessionGUID='{7F34361F-CEEA-4CEA-8CBD-2704FFE92DEF}'
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsUS('{C08961DB-0B6A-4E67-A82B-5BBBA0A84A74}')
EXEC CreateCloser '{7F34361F-CEEA-4CEA-8CBD-2704FFE92DEF}', NULL , '{08E74DBB-3BC4-49A7-AA10-95AA6BD24784}'
EXECUTE GetMachineImpressmentForSession @SessionGUID = '{446881BA-1439-4AD8-B33B-C784120EFBA2}'
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsCanadian('{446881BA-1439-4AD8-B33B-C784120EFBA2}')
SELECT SUM(Total) AS Total FROM fn_BalancingSubtractionsUS('{446881BA-1439-4AD8-B33B-C784120EFBA2}')
Поэтому, когда я пытаюсь объединить данные трассировки профилировщика, чтобы найти худшие запросы:
SELECT
Description,
COUNT(*) AS EventCount,
AVG(CPU) AS CPU, SUM(CPU) AS CpuTotal,
AVG(Reads) AS Reads, SUM(Reads) AS ReadsTotal,
AVG(Duration) AS Duration, SUM(Duration) AS DurationTotal
FROM SlowQueriesTrace
GROUP BY Description
, то агрегация не происходит, потому что каждый GUID уникален.Мне нужен какой-то способ заменить параметры uniqueidentifier общим маркером %g
:
EXECUTE GetTransactionCounts @BankGUID = %g, @SessionGUID=%g
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsUS(%g)
EXEC CreateCloser %g, NULL , %g
EXECUTE GetMachineImpressmentForSession @SessionGUID = %g
SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsCanadian(%g)
SELECT SUM(Total) AS Total FROM fn_BalancingSubtractionsUS(%g)
Тогда моя агрегация будет работать.
Помимо экспорта таблицы в Excel и ручного редактированиявсе 10,270 событий, может ли что-нибудь придумать способ поиска GUID и сопоставления с шаблоном в SQL Server?
Другие попытки взлома :
Trim *От 1023 * до первых 40 символов (то есть CAST(description AS varchar(40))
):
EXECUTE GetTransactionCounts @BankGUID =
SELECT SUM(Total) AS Total FROM fn_Balan
EXEC CreateCloser '{7F34361F-CEEA-4CEA-8
EXECUTE GetMachineImpressmentForSession
SELECT SUM(Total) AS Total FROM fn_Balan
SELECT SUM(Total) AS Total FROM fn_Balan
За исключением случаев, когда объединяются элементы, которые не должны быть объединены, и другие элементы, которые должны быть объединены, не являются.
ИспользованиеSoundEx:
E223
S423
E220
E223
S423
За исключением того, что вы видите линии, которые совершенно разные, имеют одинаковый звуковой индекс.Кроме того, я не могу определить, какому запросу S338
соответствует.
Взлом, который я в итоге использовал, заключался в создании нового столбца Category
, изначально нулевого.Затем я потратил два часа с тщательно отобранными предложениями LIKE
, чтобы выбрать конкретный запрос, а затем «пометить» их все запросом.Например:
UPDATE QueryTrace
SET Category = 'EXECUTE GetTransactionCounts @BankGUID ='
WHERE Description LIKE 'EXECUTE GetTransactionCounts @BankGUID =%'
и
UPDATE QueryTrace
SET Category = 'SELECT SUM(Total) AS Total FROM fn_BalancingAdditionsCanadian'
WHERE Description LIKE '%FROM fn_BalancingAdditionsCanadian%'
Это не значит, что мне не нужно решение с использованием этого вопроса.