Существует ли профилировщик SQL Server, похожий на профилировщики Java / .Net? - PullRequest
4 голосов
/ 30 сентября 2008

Мне нравится, как я могу профилировать приложение Java / .Net, чтобы находить узкие места производительности или проблемы с памятью. Например, очень просто найти узкое место в производительности, глядя на дерево вызовов с временем выполнения и количеством вызовов для метода . В SQL Server у меня есть хранимые процедуры, которые вызывают другие хранимые процедуры, которые зависят от представлений, что похоже на методы Java / .Net, вызывающие другие методы. Так что, похоже, такой же профилировщик был бы очень полезен здесь. Тем не менее, я смотрел далеко и широко и не мог найти один. Кто-нибудь знает о таких инструментах, для SQL Server или любой другой СУБД?

Обновление: спасибо за ваши ответы о SQL Server Profiler, но этот инструмент очень ограничен. Взгляните на скриншот .

Ответы [ 8 ]

6 голосов
/ 30 сентября 2008

Извлечь SQL Nexus Tool . Это имеет несколько хороших отчетов по выявлению узких мест. SQL Nexus - это инструмент, помогающий определить основную причину проблем с производительностью SQL Server. Он загружает и анализирует данные о производительности, собранные SQLDiag и PSSDiag. Это может значительно сократить количество времени, которое вы тратите на анализ данных вручную.

В одной из книг Inside SQL 2005 (возможно, T-SQL Querying) была классная техника, в которой автор выгружает выходные данные профилировщика SQL в таблицу или файл Excel и применяет сводную диаграмму, чтобы получить выходные данные в похожем отформатируйте как ваш скриншот.

Я не видел никаких встроенных инструментов SQL, которые бы давали вам такой анализ. Еще один полезный пост .

3 голосов
/ 30 сентября 2008

В дополнение к SQL Server Profiler, как упомянуто в комментарии @Galwegian, также проверяйте план выполнения при выполнении запроса.

http://www.sql -server-performance.com / советы / query_execution_plan_analysis_p1.aspx
http://en.wikipedia.org/wiki/Query_plan

2 голосов
/ 30 сентября 2008

Еще одна целая тема о профилировщике SQL Server:

Определение проблем производительности SQL Server

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

Если вам необходимо детально профилировать конкретный шаг базы данных, вы можете использовать профилировщик и трассировку.

Как правило, доступ к базе данных имеет определенную степень детализации, которая решается на индивидуальной основе, и активность базы данных не линейна для всех видов доступа пользователей, тогда как профилировщик программы обычно профилирует линейный путь кода.

1 голос
/ 30 сентября 2008

Чтобы найти узкие места в производительности, вы можете использовать помощник по настройке ядра СУБД (находится в меню «Инструменты» в SQL Server Management Studio. Он предлагает рекомендации по оптимизации ваших запросов и предложения по их автоматической оптимизации (например, создание соответствующих индексов и т. Д.). .).

1 голос
/ 30 сентября 2008

Как уже упоминалось, SQL Server Profiler, который отлично подходит для проверки параметров, передаваемых программой, в SQL и т. Д. Он не покажет вам дерево выполнения, хотя, если это то, что вам нужно. Для этого все, что я могу придумать, это использовать Show Plan, чтобы увидеть, что именно выполняется во время выполнения. Например. если вы вызываете sp, который вызывает представление, Profiler покажет вам только то, что sp был выполнен и какие параметры были переданы. Кроме того, монитор производительности Windows обладает обширными показателями производительности во время выполнения, характерными для SQL Server. Вы можете запустить его на сервере или подключиться удаленно.

0 голосов
/ 16 декабря 2008

Как уже упоминалось в нескольких ответах, SQL Profiler покажет, что вы запрашиваете. Что вам нужно сделать, так это включить события SP: StmtCompleted, находящиеся в группе хранимых процедур, и, если вы хотите, чтобы планы запросов также включали Showplan XML Statistics Profile, который находится в группе Performance. , Последний план XML дает вам графическое описание и показывает фактические строки, обработанные каждым шагом в плане.

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

НТН Andy

0 голосов
/ 30 сентября 2008

Есть профилировщик сервера sql, но, несмотря на его название, он не делает то, что вы хотите, по звуку вашего вопроса. Он покажет вам подробный обзор всех вызовов, происходящих в базе данных. Лучше устранять неполадки приложения в целом, а не только одного спрока за раз

Похоже, вам нужно просмотреть план выполнения ваших запросов / спок в анализаторе запросов , и это даст вам нечто похожее на данные, которые вы ищете.

0 голосов
/ 30 сентября 2008

Вы можете использовать S ql Profiler - который охватывает аспект профилирования, но я склонен думать об этом больше как о инструменте регистрации. Для диагностики производительности вам, вероятно, стоит просто посмотреть план запроса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...