Устранение проблем с производительностью Базы данных 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 | |
Состязание за кратковременную блокировку страниц | |
Отсутствующий индекс | |
Новый запрос | |
Необычная статистика ожидания | |
tempdb Спор |
|
Нехватка 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.
Следующие шаги
- Ознакомьтесь с понятиями Intelligent Insights.
- Узнайте, как устранять проблемы с производительностью с помощью Intelligent Insights.
- Ознакомьтесь с мониторингом проблем с производительностью с помощью службы "Аналитика SQL Azure".
- Узнайте, как собирать и использовать данные журнала из ресурсов Azure.