Какой SQL используется для создания графа Running Vusers в LoadRunner Analysis?
В HP LoadRunner Analysis есть график запущенных пользователей, который показывает текущее количество виртуальных пользователей, работающих на протяжении всего теста. Пример графика показан ниже.
Кто-нибудь знает, какой SQL используется для создания данных для этого графика? Я знаю, что данные хранятся в базе данных анализа MDR LoadRunner напрямую? то есть An_Session1.mdb, хотя я не могу определить запрос SQL.
Спасибо
2 ответа
Я немного уточнил запрос, поэтому вместо редактирования предыдущего я отправляю новый ответ.
Это создает столбцы, которые содержат CUMULATIVE-счетчик пользователей-пользователей для определенного действия с течением времени. Обратите внимание, что вывод не является линейным, он содержит только строку, когда что-то произошло (ось X).
SELECT
M.[End Time] AS RelTimeSec,
M.[VUser ID] AS VuserID,
M.[VUser Status ID] AS StatusID,
S.[Vuser Status Name],
( SELECT
Count( VuserEvent_Meter.[VUser Status ID] )
FROM
VuserEvent_Meter
WHERE
VuserEvent_Meter.[InOut Flag]=1 AND
VuserEvent_Meter.[End Time]<=M.[End Time] AND
VuserEvent_Meter.[VUser ID]>0 AND
VuserEvent_Meter.[VUser Status ID]=1
) AS CumulReady,
( SELECT
Count( VuserEvent_Meter.[VUser Status ID] )
FROM
VuserEvent_Meter
WHERE
VuserEvent_Meter.[InOut Flag]=1 AND
VuserEvent_Meter.[End Time]<=M.[End Time] AND
VuserEvent_Meter.[VUser ID]>0 AND
VuserEvent_Meter.[VUser Status ID]=2
) AS CumulRun,
( SELECT
Count( VuserEvent_Meter.[VUser Status ID] )
FROM
VuserEvent_Meter
WHERE
VuserEvent_Meter.[InOut Flag]=1 AND
VuserEvent_Meter.[End Time]<=M.[End Time] AND
VuserEvent_Meter.[VUser ID]>0 AND
VuserEvent_Meter.[VUser Status ID]=3
) AS CumulPause,
( SELECT
Count( VuserEvent_Meter.[VUser Status ID] )
FROM
VuserEvent_Meter
WHERE
VuserEvent_Meter.[InOut Flag]=1 AND
VuserEvent_Meter.[End Time]<=M.[End Time] AND
VuserEvent_Meter.[VUser ID]>0 AND
VuserEvent_Meter.[VUser Status ID]=4
) AS CumulQuit
FROM
VuserEvent_Meter M
INNER JOIN
VuserStatus S ON M.[VUser Status ID] = S.[Vuser Status ID]
WHERE
M.[InOut Flag]=1 AND M.[VUser Status ID] IN (1,2,3,4) AND M.[VUser ID]>0
ORDER BY
M.[End Time]
Выводит что-то вроде:
RelTimeSec VuserID StatusID Vuser Status Name CumulReady CumulRun CumulPause CumulQuit
15 1 2 Run 1 1 0 0
15 1 1 Ready 1 1 0 0
30 2 2 Run 2 2 0 0
30 2 1 Ready 2 2 0 0
45 3 1 Ready 3 3 0 0
45 3 2 Run 3 3 0 0
60 4 2 Run 4 4 0 0
60 4 1 Ready 4 4 0 0
75 5 1 Ready 5 5 0 0
75 5 2 Run 5 5 0 0
90 6 2 Run 6 6 0 0
90 6 1 Ready 6 6 0 0
...
1687 88 4 Quit 82 82 0 19
1687 86 4 Quit 82 82 0 19
1687 85 4 Quit 82 82 0 19
1687 87 4 Quit 82 82 0 19
1697 113 2 Run 83 83 0 19
1697 113 1 Ready 83 83 0 19
1712 114 1 Ready 84 84 0 19
1712 114 2 Run 84 84 0 19
1727 115 1 Ready 85 85 0 19
1727 115 2 Run 85 85 0 19
1742 116 2 Run 86 86 0 19
1742 116 1 Ready 86 86 0 19
1747 89 4 Quit 86 86 0 23
Я полагаю, вы имеете в виду проанализированные результаты в этом случае.
Если вы откроете файл.mdb и загляните в таблицу "VuserEvent_meter", вы найдете там все необходимые данные.
Он ссылается на таблицу VuserStatus для точного события. Вот SQL (написано в Access):
SELECT
[M.End Time] AS RelTimeSec, [M.VUser ID] AS VuserID, [M.VUser Status ID] AS StatusID
FROM
VuserEvent_Meter M
WHERE
[M.InOut Flag]=1 AND [M.VUser Status ID]>0 AND [M.VUser ID]>0
ORDER BY
[M.End Time]
Если вы хотите включить фактическое имя события, вам нужно присоединиться к столбцу [VuserStatus.Vuser Status Name], основываясь на [M.VUser Status ID] = [VuserStatus.Vuser Status ID].
Я надеюсь, что это указывает вам в правильном направлении.