Описание автоматической настройки
Автоматическая настройка — это функция мониторинга и анализа, которая постоянно анализирует рабочую нагрузку и определяет потенциальные проблемы и способы улучшения.
Рекомендации по автоматической настройке основаны на данных, собранных из хранилища запросов. Планы выполнения изменяются с течением времени ввиду изменений схемы, изменений индекса или изменений данных, что вызывает обновление статистики. Такое изменение может привести к некачественному выполнению запросов, поскольку план выполнения больше не соответствует требованиям данного запроса.
Кром того, автоматическая настройка позволяет собирать и применять сервисы машинного обучения к метрикам производительности для выработки рекомендаций по улучшению или даже автоматической коррекции.
Автоматическая настройка, как в локальной среде, так и в облаке, позволяет выявлять проблемы, вызванные регрессией плана выполнения запросов. Кроме того, в базе данных SQL Azure можно дополнительно повысить производительность запросов путем настройки индексирования. Автоматическая настройка базы данных SQL Azure позволяет определять индексы, которые следует добавить или даже удалить из базы данных для повышения производительности запросов.
Автоматическое исправление плана
С помощью данных хранилище запросов ядро СУБД может определить снижение производительности планов выполнения запросов. Такие планы можно определить вручную с помощью пользовательского интерфейса, однако хранилище запросов также предоставляет возможность автоматического уведомления о снижении производительности.
В приведенном выше примере можно флажок для Плана с идентификатором 1 означает, что план был применен принудительно. После активации функции ядро СУБД автоматически принудительно применит любой рекомендуемый план выполнения запросов, если:
- Предыдущий план имел больше ошибок, чем рекомендуемый план
- Предполагаемый прирост мощности ЦП превышает 10 секунд
- Производительность принудительно выполненного плана лучше, чем у предыдущего плана
После 15 выполнений запроса план вернется к последнему известному приемлемому плану.
При автоматическом принудительном выполнении планов ядро СУБД применяет последний известный приемлемый план, а также продолжает отслеживать производительность плана выполнения запросов. Если производительность принудительно выполненного плана хуже, чем у предыдущего плана, его принудительное применение отменяется и принудительно компилируется новый план. Если план, выполненный принудительно, по-прежнему более эффективен, чем прежний менее эффективный план, он по-прежнему будет выполняться принудительно до тех пор, пока не будет выполнена повторная компиляция.
Включить автоматическое исправление плана можно с помощью запроса T-SQL, как показано ниже. Для успешного выполнения команды хранилище запросов должно быть включено и должно находиться в режиме чтения и записи. Если одно из этих двух условий не выполнятся, инструкция ALTER выполняется с ошибкой.
ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);
Можно изучить рекомендации по автоматической настройке в динамическом административном представлении (DMV), sys.dm_db_tuning_recommendations
, которое доступно в SQL Server 2017 или более поздней версии, а также в решениях для Баз данных SQL Azure. В этом динамическом административном представлении указываются сведения, например причины выработки рекомендации, тип рекомендации и состояние рекомендации. Чтобы убедиться, что автоматическая настройка активирована для базы данных, проверьте представление sys.database_automatic_tuning_options
.
Автоматическое управление индексами
База данных SQL Azure может выполнять автоматическую настройку индекса. Со временем база данных узнает о существующих рабочих нагрузках и предоставляет рекомендации по добавлению или удалению индексов, чтобы обеспечить лучшую производительность. Как и в случае с улучшенными планами запросов, базу данных можно настроить на автоматическое создание или удаление индексов в зависимости от текущей производительности индекса, как показано ниже.
Если эта функция активирована, на странице Рекомендации по производительности отображаются индексы, которые можно создать или удалить в зависимости от производительности запросов. Следует помнить, что эта функция недоступна для локальных баз данных, а только для базы данных SQL Azure.
Кроме того, для просмотра функций автоматической настройки, включенных в базе данных, можно использовать следующий запрос:
SELECT name,
desired_state_desc,
actual_state_desc,
reason_desc
FROM sys.database_automatic_tuning_options
Для создания новых индексов могут потребоваться ресурсы, а временные рамки создания индекса крайне важно, чтобы это н повлияло негативно на ваши рабочие нагрузки.
База данных SQL Azure контролирует ресурсы, необходимые для создания новых индексов, чтобы избежать возникновения проблем, связанных со снижением производительности. Настройка откладывается до тех пор, пока не будут доступны необходимые ресурсы, например, если ресурсы необходимы для существующих рабочих нагрузок и недоступны для создания индекса.
Функция мониторинга исключает, что какие-либо действия могут привести к снижению производительности. Если индекс удаляется, а производительность запросов заметно снижается, то только что удаленный индекс автоматически восстанавливается.