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


Устранение проблем с производительностью Базы данных 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. Точное свойство категории для доступа к журналу I Intelligent Insights — это фиксированное значение SQLInsights, не связанное с Мониторингом базы данных SQL Azure мониторинга с помощью Azure Monitor SQL (предварительная версия).

Заголовок журнала является типичным и состоит из метки времени (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 — наименьшая. Значение impact может использоваться в качестве входных данных для автоматизации настраиваемых оповещений, в зависимости от конкретных потребностей. Свойство затронутых запросов (QueryHashes) содержит список хэшей запросов, затронутых выявленной проблемой.

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

    Следующий раздел журнала Intelligent Insights содержит сведения о конкретных запросах, которые были затронуты выявленной проблемой с производительностью. Эти сведения предоставляются в виде массива объектов, внедренного в свойство impact_s. Свойство влияния состоит из сущностей и метрик. Сущности относятся к определенному запросу (Type: Query). Уникальный хэш запроса указывается в свойстве значения (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). Его возможные значения: seconds, number и percentage. Значение измеряемой метрики указывается в свойстве значения (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.

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