Профилирование SQL Server и / или ASP.NET - PullRequest
4 голосов
/ 25 сентября 2008

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

Изменить: Я хотел бы добавить, что веб-сервер любит тайм-аут во время этих длинных запросов.

Ответы [ 5 ]

5 голосов
/ 25 сентября 2008

Sql Server имеет несколько отличных инструментов, которые помогут вам в этой ситуации. Эти инструменты встроены в Management Studio (которая раньше называлась Enterprise Manager + Query Analyzer).

Используйте SQL Profiler для отображения фактических запросов, поступающих из веб-приложения.

Скопируйте каждый из проблемных запросов (те, которые поглощают много процессорного времени или ввода-вывода). Запустите запросы с помощью «Показать фактический план выполнения». Надеюсь, вы увидите какой-то очевидный индекс, который отсутствует.

Вы также можете запустить мастер настройки (кнопка находится прямо рядом с «отображать фактический план выполнения». Он запустит запрос и внесет предложения.

Обычно, если у вас уже есть индексы, а запросы все еще работают медленно, вам нужно будет переписать запросы другим способом.

Хранение всех ваших запросов в хранимых процедурах облегчает эту работу намного .

4 голосов
/ 25 сентября 2008

Для профилирования SQL Server используйте SQL Profiler .

И вы можете использовать ANTS Profiler от Red Gate для профилирования вашего кода.

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

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

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

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

Настройка производительности - сложная вещь. Но есть несколько мест, чтобы посмотреть в первую очередь. Вы говорите, что возвращаете много данных? Вы возвращаете больше данных, чем вам нужно? Вы действительно возвращаете только нужные вам столбцы и записи? Возврат 100 столбцов с помощью select * может быть намного медленнее, чем возврат 5 столбцов, которые вы фактически используете.

Ваши индексы и статистика актуальны? Посмотрите, как обновлять статистику и переиндексировать в BOL, если вы этого не делали некоторое время. У вас есть индексы на всех полях соединения? Как насчет полей в предложении where.

Вы использовали курсор? Вы использовали подзапросы? Как насчет union - если вы используете его, можно ли изменить его на union all?

Являются ли ваши запросы доступными (Google, если не знакомы с термином.)

Используете ли вы разные, когда вы можете использовать группу по?

Вы получаете замки?

Есть много других вещей, на которые стоит посмотреть, это только отправная точка.

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

Если есть определенный запрос или хранимая процедура, которую я хочу настроить, я считаю, что включение статистики перед запросом очень полезно:

SET STATISTICS TIME ON
SET STATISTICS IO ON

При включении статистики в Query Analyzer статистика отображается на вкладке «Сообщения» панели «Результаты».

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

Вот ссылки на MSDN для этих статистических команд:

УСТАНОВИТЬ ВРЕМЯ СТАТИСТИКИ

НАСТРОЙКА СТАТИСТИКИ IO

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