Время Выполнения запросов в Studio управления и профилировщике. Что это измеряет?

У меня есть свой производственный SQL Server в центре удаленных данных (и веб-серверы расположены в том же дата-центре). Во время разработки мы заметили, что одно конкретное представление занимает много времени для выполнения (приблизительно 60-80 secs) в нашем локальном SQL Server разработки, и мы согласились с ним. Это способствовалось производству и когда я выполняю тот же запрос на Производстве DB (который находится в дата-центре) от моего локального Studio управления, я вижу, что запрос занимает приблизительно 7 минут, 17 secs для выполнения (доступный правый нижний угол студии управления).When, я выполнил профилировщика, я вижу, что время, потраченное для выполнения того запроса, является миллисекундами 437 101 микросекунды, хотя это обнаруживается в студии управления как 7:17., который на самом деле является приблизительно 437 101 миллисекундой. Мой DBA говорит, что в напоминании представление занимает примерно 60 - 80 секунд, хотя я вижу различные числа от студии управления и профилировщика. Кто-то может сказать мне, что эти продолжительности означают в студии управления и Профилировщике?

Мое предположение: продолжительность между отправкой последнего байта запроса и получением последнего байта ответа с сервера. Клиентские статистические данные были следующие: Клиентское Время обработки: 90 393 Общего Выполнения time:92221 Время ожидания на ответах сервера: 1828

Мое лучшее предположение на том, какая "продолжительность" на средствах профилировщика является "временем, потраченным SQL Server (механизм оптимизации для парсинга запроса генерируйте план запросов или используйте существующий план запросов + записи выборки от различных страниц) генерировать набор результатов, который исключает время, потраченное данными для перемещения по проводу в клиент"

Править: Я нахожу, что оба этих раза о том же (студия управления по сравнению с профилировщиком). Как они имеют отношение с временами, которые я вижу в клиентской статистике?

Кто-то может пролить больше света на них?

8
задан ram 21 June 2010 в 15:33
поделиться

1 ответ

Если я правильно понимаю ваш вопрос, вы сначала задаетесь вопросом разница между продолжительностью, сообщаемой профилировщиком, и статистикой, представленной в SSMS (в правом нижнем углу для общего времени и / или при установке ВРЕМЕНИ СТАТИСТИКИ ВКЛ.). В дополнение к этому, вы, похоже, не уверены в комментарии производственного администратора базы данных о том, что представление выполняется в течение ожидаемой продолжительности ~ 60 секунд.

Во-первых, из электронной документации, статика, которую SSMS будет сообщать через SET STATISTICS TIME ON:

«Отображает количество миллисекунд. требуется для синтаксического анализа, компиляции и выполняйте каждый оператор ».

Вы в этом разбираетесь. Что касается продолжительности в Profiler, она описывается как:

« Продолжительность (в микросекундах) событие. "

С моей точки зрения, эти два должны быть функционально эквивалентными (и, как я уверен, вы заметили, Profiler сообщит в микросекундах, если вы идете против SQL 2005 или более поздней версии). Я говорю это, потому что" событие " "в этом случае (в отношении продолжительности в Profiler) выполняется выборка, которая включает доставку клиенту; это согласуется в обоих случаях.

Похоже, вы подозреваете, что география является виновником большой продолжительности при выполнении запросить удаленно. Это вполне может быть.Вы можете проверить это, выполнив выбор в представлении в одном окне запроса, затем запустив другое окно запроса и просмотрев тип ожидания в запросе:

select
    a.session_id
    ,a.start_time
    ,a.status
    ,a.command
    ,db_name(a.database_id) as database_name
    ,a.blocking_session_id
    ,a.wait_type
    ,a.wait_time
    ,a.cpu_time
    ,a.total_elapsed_time
    ,b.text
from sys.dm_exec_requests a
    cross apply sys.dm_exec_sql_text(a.sql_handle) b
where a.session_id != @@spid;

Я подозреваю, что вы увидите что-то вроде ASYNC_NETWORK_IO в качестве типа ожидания, если география проблема - иначе посмотрите, что из этого получится. Если вы профилируете запрос удаленного выполнения, длительность будет отражать статистику времени, которую вы видите в SSMS. ОДНАКО, если вы используете Profiler и обнаруживаете, что продолжительность этого запроса при выполнении с одного из веб-серверов , который находится в том же центре обработки данных, что и SQL Server, все еще занимает 7 минут, то администратор базы данных это большой, жирный лжец :). Я бы использовал Profiler для записи запросов, которые занимают больше 1 минуты, попытаюсь отфильтровать ваше представление и взять среднее значение, чтобы увидеть, достигли ли вы цели по производительности.

Поскольку других ответов нет, меня беспокоит, что я здесь далеко от базы - но уже поздно, и я новичок в этом, поэтому я подумал, что попробую!

8
ответ дан 5 December 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: