Каков наилучший способ профилировать базу данных sqlserver 2005 по производительности? - PullRequest
6 голосов
/ 22 октября 2008

Какими техниками вы пользуетесь? Как вы узнаете, какие работы занимают больше всего времени? Есть ли способ узнать обидные приложения?

Ответы [ 5 ]

5 голосов
/ 22 октября 2008

Шаг 1: Установите Панель управления производительностью SQL Server .

Шаг2: Прибыль.

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

3 голосов
/ 22 октября 2008

Для выявления проблемных запросов запустите Profiler, выберите следующие события:

  • TSQL: BatchCompleted
  • TSQL: StmtCompleted
  • SP: завершено
  • SP: StmtCompleted

фильтр вывода, например,

  • Продолжительность> x мс (например, 100 мс, зависит в основном от ваших потребностей и типа системы)
  • CPU> y мс
  • Читает> r
  • пишет> ш

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

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

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

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

Затем снова загрузите сохраненные данные из таблицы профилирования в профилировщик и с помощью importmenu импортируйте выходные данные из systemmonitor, и профилировщик сопоставит выходные данные sysmon с вашими данными sql profiler. Это очень хорошая особенность.

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

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

1 голос
/ 22 октября 2008

Я использую SQL Profiler, который поставляется с SQL Server. Большинство плохо выполненных запросов, которые я обнаружил, не используют много ЦП, но генерируют тонну дискового ввода-вывода.

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

1 голос
/ 22 октября 2008

У меня был хороший успех с инструментами настройки базы данных, предоставляемыми внутри SSMS или SQL Profiler при работе на SQL Server 2000.

Ключом является работа с ХОРОШИМ набором образцов, отслеживая часть ИСТИННОЙ рабочей нагрузки для аналитики, которая получит лучший общий результат за доллар.

0 голосов
/ 22 октября 2008

Я использую несколько разных техник.

Если вы пытаетесь оптимизировать конкретный запрос, используйте Query Analyzer. Используйте инструменты, такие как отображение плана выполнения и т. Д.

В вашей ситуации, когда вы не уверены, какой запрос выполняется медленно, одним из самых мощных инструментов, которые вы можете использовать, является SQL Profiler.

Просто выберите базу данных, которую вы хотите профилировать, и дайте ей сделать свое дело.

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

Вы захотите посмотреть на запросы, которые много читают, или занимают много процессорного времени и т. Д.

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

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