2008-08-18 3 views
9

У нас есть случайные случайные таймауты запросов на нашем кластере SQL Server 2005. У меня есть несколько приложений, которые его используют, поэтому я помогаю в расследовании. При просмотре% процессорного времени в обычном ol Perfmon вы, безусловно, можете видеть, как он привязывается. Тем не менее, мониторинг активности SQL обеспечивает только кумулятивное время процессора и ввода-вывода, используемое процессом, а не то, что он использует прямо сейчас, или в течение определенного периода времени. Возможно, я мог бы использовать профилировщик и запустить трассировку, но этот кластер очень сильно используется, и я боюсь, что буду искать иглу в стоге сена. Я лаяю неправильное дерево?Идентификация проблем производительности SQL Server

Есть ли у кого-нибудь хорошие методы отслеживания дорогостоящих запросов/процессов в этой среде?

ответ

12

Это даст вам 50 лучших заявлений среднего времени центрального процессора, проверьте здесь для других сценариев: http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50 
     qs.total_worker_time/qs.execution_count as [Avg CPU Time], 
     SUBSTRING(qt.text,qs.statement_start_offset/2, 
      (case when qs.statement_end_offset = -1 
      then len(convert(nvarchar(max), qt.text)) * 2 
      else qs.statement_end_offset end -qs.statement_start_offset)/2) 
     as query_text, 
     qt.dbid, dbname=db_name(qt.dbid), 
     qt.objectid 
FROM sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt 
ORDER BY 
     [Avg CPU Time] DESC 
2

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

4

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

3

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

2

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

2

This utility автор Erland Sommarskog очень полезен.

Это хранимая процедура, которую вы добавляете в свою базу данных. Запускайте его каждый раз, когда вы хотите увидеть, какие запросы активны, и получите хорошее представление о блокировках, блоках и т. Д. Я использую его регулярно, когда что-то кажется задушенным.

4

Я нашел Performance Dashboard Reports, чтобы быть очень полезным. Это набор пользовательских отчетов RS, предоставленных Microsoft. Вам просто нужно запустить установщик на своем клиентском ПК, а затем запустить setup.sql на экземпляре SQL Server.

После этого щелкните правой кнопкой мыши по базе данных (не важно, какой из них) в SSMS и goto Reports -> Custom Reports. Перейдите к и выберите файл performance_dashboard_main.rdl, который находится по умолчанию в папке \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ PerformanceDashboard. Вам нужно сделать это только один раз. В первый раз он появится в списке отчетов.

Основной вид панели управления покажет использование ЦП с течением времени, между прочим. Иногда вы можете обновлять его. Когда вы увидите всплеск, просто нажмите на панель на графике, чтобы получить подробные данные позади него.

Смежные вопросы