2008-09-30 6 views
4

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

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

ответ

6

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

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

Я не видел встроенных инструментов SQL, которые дают вам такой анализ. Другой полезный post.

0

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

3

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

http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx
http://en.wikipedia.org/wiki/Query_plan

+0

я запускаю профайлер, чтобы получить общее представление о которых выполняются запросы, а затем скопировать запросы, которые выполняются слишком медленно в анализатор запросов, чтобы лучше рассмотреть в плане запроса. – Kibbee 2008-09-30 15:19:31

2

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

Identifying SQL Server Performance Problems

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

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

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

0

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

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

1

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

1

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

0

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

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

НТН Энди