Поделиться через


Устранение проблем с производительностью Базы данных SQL Azure и Управляемого экземпляра SQL Azure с помощью журнала диагностики производительности Intelligent Insights

Применимо к: База данных SQL Azure Управляемый экземпляр SQL Azure

В этой статье содержатся сведения об использовании журнала диагностики производительности, который создается в Intelligent Insights, для устранения проблем с производительностью Базы данных SQL Azure и Управляемого экземпляра SQL Azure. Здесь также описан формат этого журнала диагностики и содержащиеся в нем данные, которые будут полезны разработчикам. Этот журнал диагностики можно отправить в журналы Azure Monitor, Центры событий Azure, службу хранилища Azure или стороннее решение для разработки настраиваемых функций оповещения и отчетности в соответствии с процедурами DevOps.

Примечание.

Intelligent Insights — это предварительная версия функции, недоступная в следующих регионах: Западная Европа, Северная Европа, западная часть США 1 и восточная часть США 1.

Заголовок журнала

Журнал диагностики использует стандартный формат JSON для вывода результатов Intelligent Insights. Точное свойство категории для доступа к журналу Intelligent Insights — это фиксированное значение SQLInsights, не связанное с Мониторингом базы данных SQL Azure с помощью Azure Monitor SQL Insights (предварительная версия).

Заголовок журнала является типичным и состоит из метки времени (TimeGenerated), которая показывает, когда была создана запись. Он также включает ИД ресурса (ResourceId), который относится к конкретной базе данных, с которой связана запись. Категория (Category), уровень (Level) и имя операции (OperationName) являются фиксированными свойствами, значения которых не изменяются. Они указывают, что запись журнала является информационной и что она сгенерирована в Intelligent Insights (SQLInsights).

"TimeGenerated" : "2017-9-25 11:00:00", // time stamp of the log entry
"ResourceId" : "database identifier", // value points to a database resource
"Category": "SQLInsights", // fixed property
"Level" : "Informational", // fixed property
"OperationName" : "Insight", // fixed property

Идентификатор проблемы и затронутая база данных

Свойства идентификации проблемы (issueId_d) позволяет однозначно отслеживать проблемы с производительностью вплоть до их устранения. Несколько записей событий в журнале, указывающие статус одной и той же проблемы, будут иметь одинаковый идентификатор проблемы.

Помимо идентификатора проблемы в журнал диагностики записываются метки времени начала (intervalStartTime_t) и окончания (intervalEndTme_t) определенного события, связанного с проблемой.

Свойство эластичного пула (elasticPoolName_s) указывает, какому эластичному пулу принадлежит база данных, в которой обнаружена проблема. Если база данных не является частью эластичного пула, этому свойству значение не присваивается. База данных, в которой выявлена проблема, указывается в свойстве имени базы данных (databaseName_s).

"intervalStartTime_t": "2017-9-25 11:00", // start of the issue reported time stamp
"intervalEndTme_t":"2017-9-25 12:00", // end of the issue reported time stamp
"elasticPoolName_s" : "", // resource elastic pool (if applicable)
"databaseName_s" : "db_name", // database name
"issueId_d" : 1525, // unique ID of the issue detected
"status_s" : "Active" // status of the issue – possible values: "Active", "Verifying", and "Complete"

Обнаруженные проблемы

Следующий раздел журнала производительности Intelligent Insights содержит проблемы с производительностью, выявленные с помощью встроенного искусственного интеллекта. Выявленные данные указываются в свойствах журнала диагностики формата JSON. Эти обнаружения состоят из категории проблемы, её влияния, затронутых запросов и метрик. Свойства обнаружений могут содержать несколько выявленных проблем с производительностью.

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

"detections_s" : [{
"impact" : 1 to 3, // impact of the issue detected, possible values 1-3 (1 low, 2 moderate, 3 high impact)
"category" : "Detectable performance pattern", // performance issue detected, see the table
"details": <Details outputted> // details of an issue (see the table)
}]

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

Категория выявленной проблемы

Свойство категории (category) описывает категорию выявляемых шаблонов производительности. В следующей таблице приведены все возможные категории выявляемых шаблонов снижения производительности. Дополнительные сведения см. в статье Устранение проблем с производительностью базы данных SQL Azure с помощью Intelligent Insights.

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

Выявляемые шаблоны производительности Выводимые сведения
достижение лимитов ресурсов;
  • Затронутые ресурсы
  • Хэши запросов
  • Процент потребления ресурсов
  • Увеличение рабочей нагрузки
  • Количество запросов, объем выполнения которых увеличился
  • Хэши запросов, больше всего повлиявших на увеличение рабочей нагрузки
  • Нехватка памяти
  • Клерк памяти
  • Блокировка
  • Хэши затронутых запросов
  • Хэши блокирующих запросов
  • Повышенное значение MAXDOP
  • Хэши запросов
  • Время ожидания CXP
  • Время ожидания
  • Соперничество за блокировку страниц
  • Хэши запросов, которые приводят к конкуренции
  • Отсутствующий индекс
  • Хэши запросов
  • Новый запрос
  • Хеш новых запросов
  • Необычная статистика ожидания
  • Типы необычного времени ожидания
  • Хэши для запросов
  • Время ожидания запросов
  • tempdb Спор
  • Хэши запросов, которые вызывают конфликт
  • Атрибуция запросов к общей продолжительности ожидания из-за соперничества за блокировку страниц базы данных [%]
  • Нехватка пула эластичности DTU
  • Эластичный пул
  • Базы данных с самым большим потреблением DTU
  • Процент DTU, используемых основным потребителем пула
  • Регрессия плана
  • Хэши запросов
  • Идентификаторы высокоэффективных планов
  • Идентификаторы низкоэффективных планов
  • Изменение значения конфигурации на уровне базы данных
  • Изменения конфигурации в базе данных в сравнении со значениями по умолчанию.
  • Медленная работа клиента
  • Хэши запросов
  • Время ожидания
  • Переход на более низкую ценовую категорию
  • Текстовое уведомление
  • Воздействие

    Свойство влияния (impact) описывает, насколько обнаруженное поведение способствовало проблеме, с которой сталкивается база данных. по шкале от 1 до 3, где 3 — это наибольшая подверженность, 2 — умеренная, а 1 — наименьшая. Значение воздействия может использоваться в качестве входных данных для автоматизации настраиваемых оповещений в зависимости от конкретных потребностей. Свойство затронутых запросов (QueryHashes) содержит список хэшей запросов, затронутых выявленной проблемой.

    Затронутые запросы

    Следующий раздел журнала Intelligent Insights содержит сведения о конкретных запросах, которые были затронуты выявленной проблемой с производительностью. Эти сведения предоставляются в виде массива объектов, внедренного в свойство impact_s. Свойство влияния состоит из сущностей и метрик. Сущности относятся к определенному запросу (Тип: Запрос). Уникальный хэш запроса указывается в свойстве значения (Value). Кроме того, каждый указанный запрос сопровождается метрикой и значением, которые описывают выявленную проблему с производительностью.

    В следующем примере журнала было обнаружено, что время выполнения запроса с хэшем 0x9102EXZ4 увеличилось (Metric: DurationIncreaseSeconds). Значение 110 секунд означает, что этот запрос выполнялся на 110 секунд дольше. Так как могут быть выявлены несколько запросов, этот раздел журнала может содержать несколько записей о запросах.

    "impact" : [{
    "entity" : {
    "Type" : "Query", // type of entity - query
    "Value" : "query hash value", // for example "0x9102EXZ4" query hash value },
    "Metric" : "DurationIncreaseSeconds", // measured metric and the measurement unit (in this case seconds)
    "Value" : 110 // value of the measured metric (in this case seconds)
    }]
    

    Метрики

    Единицы измерения каждой полученной метрики указываются в свойстве метрики (metric) с возможными значениями: секунды, число и процент. Значение измеряемой метрики указывается в свойстве значения (value).

    Свойство DurationIncreaseSeconds предоставляет единицу измерения в секундах. а для CriticalErrorCount единицей измерения является число, представляющее собой количество ошибок.

    "metric" : "DurationIncreaseSeconds", // issue metric type – possible values: DurationIncreaseSeconds, CriticalErrorCount, WaitingSeconds
    "value" : 102 // value of the measured metric (in this case seconds)
    

    Анализ первопричин и рекомендации по повышению производительности

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

    // example of reported root cause analysis of the detected performance issue, in a human-readable format
    
    "rootCauseAnalysis_s" : "High data IO caused performance to degrade. It seems that this database is missing some indexes that could help."
    

    Вы можете использовать журнал производительности Intelligent Insights с журналами Azure Monitor или сторонним решением для настройки функций оповещения и отчетности в DevOps.

    Следующие шаги