Счетчики монитора производительности Windows для SQL Server
(Оригинальная статья: https://www.mssqltips.com/sqlservertip/6945/windows-performance-monitor-counters-for-sql-server/)
Перевод: Пётр Окунев, https://vk.com/peter1st
Проблема
Как получить данные и интерпретировать результаты некоторых часто используемых счетчиков монитора производительности, связанных с SQL Server?
Решение
Мы смотрели, как создать и запустить Perfmon Collector Set для сбора информации о производительности в режиме реального времени. Теперь мы рассмотрим некоторые выходные данные, показатели и значения, на которые следует обращать внимание при устранении неполадок.
Объекты / Счетчики
В следующей таблице приведен список объектов Perfmon и счетчиков производительности, которые обычно используются для проверки производительности SQL Server, а также их описания и руководство по ожидаемым значениям.
Perfmon Объект | Perfmon Счетчик | Описание Счетчика | Что Искать |
Memory | Available MBytes | Доступные мегабайты — это объем физической памяти в мегабайтах, доступный для немедленного выделения процессу или для использования системой. | Должно оставаться довольно постоянным и, вероятно, не опускаться ниже 4096 МБ или около того. Может указывать, что «максимальная память сервера» оставлена по умолчанию, приложения, отличные от SQL Server, работают на сервере. |
Processor | % Processor Time | % процессорного времени — это процент истекшего времени, которое процессор (ЦП) тратит на выполнение потока, отличного от простоя. | % процессорного времени будет сильно различаться на активном сервере. Всплески до 100% не редкость, но если оно превышает 70% или около того в течение какого-либо периода времени, ваши пользователи, вероятно, испытывают проблемы с производительностью. Причиной может быть отсутствие или промахи индексов в запрашиваемой таблице. |
SQLServer:Access Methods | Forwarded Records/sec | Количество записей, полученных с помощью перенаправленных указателей записей | В идеале близко к 0. |
SQLServer:Access Methods | Full scans/sec | Количество неограниченных полных сканирований. Это может быть сканирование базовой таблицы или полное сканирование индекса. | Предпочтительно менее 1. |
SQLServer:Access Methods | Page Splits / Sec | Количество разбиений страниц в секунду, возникающих в результате переполнения страниц индекса. | Должно быть меньше 20% всех Batch Requests/Sec. |
SQLServer:Buffer Manager | Buffer Cache hit ratio | Процент страниц, которые были найдены в пуле буферов без чтения с диска | Вы хотели бы, чтобы это значение было постоянным или близким к 100%. Меньше может указывать на нехватку памяти на сервере или выделенную для SQL Server. |
SQLServer:Buffer Manager | Checkpoint Pages / Sec | Количество страниц, сброшенных контрольной точкой или другими операциями, требующими сброса всех грязных страниц. | Ориентир для сравнения. |
SQLServer:Buffer Manager | Page life expectancy | Количество секунд, в течение которых страница будет оставаться в пуле буферов без ссылок. | Эмпирическое правило: это не должно опускаться ниже 300 миллисекунд. |
SQLServer:General Statistics | User Connections | Количество пользователей, подключенных к системе. | Используется в качестве эталонного значения, чтобы увидеть, увеличивается ли среднее число со временем, что указывает на большую активность. |
SQLServer:Locks | Average Wait Time (ms) | Среднее время ожидания (в миллисекундах) для каждого запроса на блокировку, который привел к ожиданию. | В идеале должно быть 0. |
SQLServer:Locks | Lock Waits / Sec | Количество запросов на блокировку, которые не могли быть удовлетворены немедленно и требовали от вызывающего объекта ожидания перед предоставлением блокировки. | В идеале должно быть 0. |
SQLServer:Memory Manager | Memory Grants Pending | Текущее количество процессов, ожидающих предоставления памяти рабочей области | В идеале должно быть 0. |
SQLServer:Memory Manager | Target Server Memory (KB) | Идеальный объем памяти, который сервер готов потреблять | Соотношение: Общая память сервера (КБ) / память целевого сервера (КБ) должна быть приблизительно равна 1. |
SQLServer:Memory Manager | Total Server Memory (KB) | Общий объем динамической памяти, потребляемой сервером в данный момент. | Соотношение: Общая память сервера (КБ) / память целевого сервера (КБ) должна быть приблизительно равна 1. |
SQLServer:SQL Statistics | Batch Requests/Sec | Количество пакетных запросов SQL, полученных сервером | Бенчмарк активности сервера. |
SQLServer:SQL Statistics | SQL Compilations/Sec | Количество компиляций SQL | Должен быть на уровне 10% или меньше от общего Batch Requests/sec. |
SQLServer:SQL Statistics | SQL Re-Compilations/Sec | Количество перекомпиляций SQL | Должен быть на уровне 10% или меньше от общего Batch Requests/sec. |
Просмотр данных о производительности
Переходим к нашему ранее созданному и запущенному Collector Set.
- Щелчок ПКМ
- Latest Report
Здесь мы видим данные, собранные в определенный день с 11:45 до 12:45. Верхняя часть экрана представляет собой графическое представление каждого счетчика. Прямо под ним находятся значения для выбранного счетчика. А внизу мы выбираем Counters.
Пришло время рассмотреть два примера.
Пример #1
Здесь мы сняли все флажки Show, кроме % Processor Time чтобы показать более чистое графическое представление. Глядя на числа внизу, мы видим, что минимум был 0%, максимум 55,746%, а средний 0,289%. Глядя на график, мы подтверждаем цифры, и, как мы видим, около 12:35 был очень короткий всплеск, но в остальном он был низким.
Пример #2
Обратимся к таблице Perfmon Object / Counter для следующего примера и мы увидим, что для того, чтобы выяснить, является ли SQL Compilations/Sec и SQL Re-Compilations/Sec ниже порога, необходимого для получения значения Batch Requests/sec.
- Оставим только 3 Счетчика в запросе
- Щелчок ПКМ в области Counters
- Выберем каждый из 3 Счетчиков индивидуально
- Выберем масштаб, который соответствует линии в области экрана в раскрывающемся списке для Batch Requests/sec и подходит к SQL Compilations/Sec и SQL Re-Compilations/Sec
- OK
Глядя на график, мы видим, что Batch Requests/Sec единственный хорошо видимый счетчик. SQL Compilations/Sec и SQL Re-Compilations/Sec едва видны на дне. На глаз это указывает, что они оба значительно ниже порога 10%.
Для подтверждения выберите Average Batch Requests/sec и это 0.065. 10% от 0.065 будет 0.0065. Выберите SQL Compilations/Sec и среднее 0.001. Выберите SQL Re-Compilations/Sec и среднее 0.00. оба этих значения меньше 0.0065, так что мы в рамках.