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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
374
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

Спасибо за ответ, это SQL Server 2005, но я считаю, что мастер настройки базы данных все еще существует (я обновил вопрос)

digiguru 22.10.2008 19:21

Да, в этом случае просто используйте помощник по настройке ядра СУБД, доступный в разделе «Инструменты» в SSMS!

Mitchel Sellers 22.10.2008 19:48

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

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

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

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

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

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

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

Ответ принят как подходящий

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

Шаг 2: Выгода.

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

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

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

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

  • TSQL: BatchCompleted
  • TSQL: StmtCompleted
  • СП: Завершено
  • SP: StmtCompleted

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

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

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

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

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

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

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

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

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

Другие вопросы по теме