Что контролировать на SQL Server - PullRequest
5 голосов
/ 08 июня 2010

Меня попросили следить за SQL Server (2005 и 2008), и мне интересно, на какие метрики посмотреть? Я могу получить доступ к счетчикам WMI, но немного растерялся, насколько полезной будет глубина.

В данный момент в моем списке:

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

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

Как я полагаю, это был бы действительно хороший вопрос, чтобы ответить для общего сообщества, я подумал, что я бы устроил там несколько судебных экспертов (я, конечно, не один из них!)

Извиняюсь, если довольно открытый вопрос. Ry

Ответы [ 7 ]

6 голосов
/ 08 июня 2010
5 голосов
/ 17 ноября 2015

Поздний ответ, но может быть интересен другим читателям

У одного из моих коллег была похожая проблема, и он использовал эту ветку, чтобы помочь ему начать. Он также натолкнулся на сообщение в блоге, описывающее общие причины проблем с производительностью и инструкцию о том, какие показатели следует отслеживать, помимо уже упомянутых здесь. Эти другие метрики:

•% времени на диске:

Этот счетчик указывает на проблему с диском, но он должен наблюдаться вместе со счетчиком текущей длины очереди диска, чтобы быть действительно информативным. Напомним также, что диск может быть узким местом до того, как% Disk Time достигнет 100%.

• Время чтения с диска% и время записи на диск%:

Метрики% Disk Read Time и% Disk Write Time аналогичны% Disk Time, просто показывают операции, считанные с или записанные на диск, соответственно. На самом деле они представляют собой значения средней длины очереди чтения диска и средней длины очереди записи диска, представленные в процентах.

•% времени простоя:

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

•% свободного пространства:

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

Если вы хотите прочитать весь пост, вы можете найти его здесь: http://www.sqlshack.com/sql-server-disk-performance-metrics-part-2-important-disk-performance-measures/

1 голос
/ 08 июня 2010

Процент использования ЦП и средняя длина очереди диска также довольно стандартны. Процессоры, постоянно превышающие 80%, указывают, что вам может потребоваться больше или лучше процессоров (и серверов для их размещения); Постоянно больше 2 в любой очереди диска означает, что на этом диске есть узкое место дискового ввода-вывода.

1 голос
/ 08 июня 2010

Бюджет позволяет, стоит посмотреть на некоторые сторонние инструменты, чтобы помочь. Мы используем Диспетчер диагностики SQL Idera для мониторинга состояния сервера и Ignite Confio , чтобы следить за производительностью запросов. Оба продукта хорошо послужили нам в нашем магазине.

1 голос
/ 08 июня 2010

Используйте SQL Profiler для определения ваших 10 (или более) запросов.Создайте базовую производительность для этих запросов.Проверьте текущее среднее время выполнения относительно вашей базовой линии и предупредите, если значительно выше вашей базовой линии.Вы также можете использовать этот список для идентификации запросов для возможной оптимизации.

Это решает проблему на более высоком уровне, чем просто просмотр подробной статистики, хотя эта статистика также может быть полезна.Я нашел этот подход для работы на любой СУБД, включая MySQL и Oracle.Если ваши лучшие запросы начинают увеличиваться, вы можете поспорить, что у вас начнутся проблемы с производительностью, которые вы можете начать более детально.

0 голосов
/ 22 июня 2014

Помимо показателей производительности, предложенных выше, я настоятельно рекомендую следить за доступной памятью, пакетных запросов / сек, SQL-компиляций / сек и SQL-перекомпиляций / сек. Все они доступны в представлении sys.dm_os_performance_counters и в системном мониторе Windows .

Что касается

в идеале я бы хотел организовать отслеживаемые объекты по 3 категориям, например, «FYI», «Warning» и «Critical»

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

Проверьте статью Брента Озара о не очень полезных показателях здесь .

0 голосов
/ 19 июня 2012

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

  sys.dm_exec_sessions s
   LEFT  JOIN sys.dm_exec_connections c
        ON  s.session_id = c.session_id
   LEFT JOIN sys.dm_db_task_space_usage tsu
        ON  tsu.session_id = s.session_id
   LEFT JOIN sys.dm_os_tasks t
        ON  t.session_id = tsu.session_id
        AND t.request_id = tsu.request_id
   LEFT JOIN sys.dm_exec_requests r
        ON  r.session_id = tsu.session_id
        AND r.request_id = tsu.request_id
   OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) TSQL

Следующий пост очень хорошо объясняет, как вы можете использовать его для мониторинга вашего сервера, когда ничего не работает http://tsqltips.blogspot.com/2012/06/monitor-current-sql-server-processes.html

...