Расхождение в SQL Server Profiler - PullRequest
0 голосов
/ 23 июня 2009

Я борюсь со странной проблемой, используя Sql Profiler. Выполняя некоторые сценарии тестирования производительности, я запускаю профилировщик, чтобы найти узкие места. Одно конкретное утверждение, похоже, занимает много времени - с процессором 1407, чтениями 75668 и длительностью 175.

Однако, когда я выполняю ту же инструкцию в Management Studio, SQL Profiler возвращает CPU 16, Reads 4 & Duration 55.

Может ли кто-нибудь указать мне на то, что я делаю неправильно, поскольку я полностью сбит с толку этим.

Спасибо, Сьюзен.

Ответы [ 3 ]

3 голосов
/ 23 июня 2009

Возможно, у вас есть скалярная пользовательская функция с доступом к таблице.

Используемые ресурсы выбираются только профилировщиком: SSMS не показывает внутренний ввод-вывод или ЦП скалярного udf.

Пример:

CREATE FUNCTION dbo.MyUdf (
    @param int
)
AS
RETURNS int
BEGIN
    RETURN (SELECT MAX(foo) FROM dbo.MyOtherTable WHERE Key = @param)
END
GO


SELECT
    col1, col2, dbo.MyUdf(col3)
FROM
    dbo.MyFirstTable

Однако, это не может объяснить продолжительность ...

0 голосов
/ 20 августа 2009

Если вы запустите запрос в менеджере предприятия сразу после профилирования, все нужные ему страницы будут кэшированы в памяти. Это может привести к радикальным улучшениям.

Если щелкнуть правой кнопкой мыши сервер в Enterprise Manager и выбрать «Свойства», вы можете изменить объем памяти, доступный для сервера. Если вы измените это число хотя бы на один шаг, SQL-сервер очистит свой кэш.

0 голосов
/ 20 августа 2009

Была проблема с Java / Hibernate.

...