Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2022 (16.x)
База данных SQL Azure Управляемый экземпляр SQL Azure
базе данных SQL в Microsoft Fabric
Изменяет конфигурацию компонента автоматического исправления планов (APC) функции автоматической настройки . Параметры конфигурации применяются к заданномуquery_id
, который можно получить из хранилище запросов.
К этим параметрам относятся возможность разрешить query_id
или пропустить возможность рассмотрения APC или настроить APC для применения дополнительной расширенной регрессии плана на основе времени к конкретному запросу. Параметры конфигурации не являются взаимоисключающими.
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис SQL Server 2022 (16.x), Управляемый экземпляр SQL Azure:
sp_configure_automatic_tuning
[ @option = ] 'FORCE_LAST_GOOD_PLAN'
, [ @type = ] 'type'
[ , [ @type_value = ] N'type_value' ]
, [ @option_value = ] { 'ON' | 'OFF' }
Синтаксис для База данных SQL Azure базы данных SQL в Microsoft Fabric:
sp_configure_automatic_tuning
[ @option = ] { 'FORCE_LAST_GOOD_PLAN' | 'FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK' }
, [ @type = ] 'type'
[ , [ @type_value = ] N'type_value' ]
, [ @option_value = ] { 'ON' | 'OFF' }
Аргументы
Это важно
Аргументы для расширенных хранимых процедур необходимо ввести в определенном порядке, как описано в разделе Синтаксис. Если параметры введены вне порядка, возникает сообщение об ошибке.
[ @option = ] 'option'
Указывает имя вызываемого параметра конфигурации. @option — varchar(60), без значения по умолчанию и может быть одним из этих значений.
значение | Описание |
---|---|
FORCE_LAST_GOOD_PLAN |
Позволяет APC определять регрессии выбора плана выполнения и автоматически устранять проблему, заставляя последний известный хороший план, как записано в хранилище запросов. Узнайте , что такое регрессия выбора плана выполнения? |
FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK |
Применимо только к: База данных SQL Azure и базе данных SQL в Microsoft Fabric. Указывает APC использовать дополнительную проверку регрессии плана на основе времени, которая возникает через пять минут после обнаружения изменения плана. Эта проверка позволяет APC избежать предвзятости своих проверок регрессии для запросов, которые выполняются быстро. С помощью этого параметра APC учитывает выполнение запросов, которые могут выполняться дольше или подвержены времени ожидания из-за изменения плана. |
[ @type = ] 'type'
Тип объекта, к к который применяется конфигурация.
@type — varchar(60) без значения по умолчанию. Возможное значение равно QUERY
.
[ @type_value = ] N'type_value'
Идентификатор запроса из хранилище запросов, к которому должна применяться конфигурация. @type_value — это sysname без значений по умолчанию.
[ @option_value = ] 'option_value'
Требуемое состояние параметра конфигурации.
@option_value — varchar(60) без значений по умолчанию. Возможные значения: ON
или OFF
. Для параметра FORCE_LAST_GOOD_PLAN
при задании значения OFF
APC пропускает query_id
в хранилище запросов от отслеживания системой регрессии плана запросов.
Значения кода возврата
0
(успешно) или 1
(сбой).
Проверьте текущие значения конфигурации
Вы также можете проверить, какие параметры конфигурации заданы, просмотрев выходные данные представления каталога sys.database_automatic_tuning_configurations . Изменения в представлении каталога также записываются в журнал ошибок SQL Server.
Разрешения
Требуется разрешение ALTER DATABASE
.
Замечания
Для SQL Server 2022 (16.x) CU 4 и более поздних версий можно применить поведение FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK
параметра конфигурации ко всему экземпляру SQL Server с глобальным флагом трассировки 12656. Все запросы, доступные для записи хранилище запросов, применяют дополнительную логику проверки регрессии на основе времени.
Примеры
А. Настройте автоматическую настройку (параметр "Последний хороший план"), чтобы игнорировать определенный запрос.
В следующем примере показано, как настроить автоматическую настройку, чтобы игнорировать запрос, если он имеет право на автоматическое принудительное применение плана. В этом примере используется значение 422
query_id
, выбранное из хранилище запросов.
EXECUTE sys.sp_configure_automatic_tuning 'FORCE_LAST_GOOD_PLAN', 'QUERY', 422, 'OFF';
B. Настройте автоматическую настройку (параметр Force Last Good Plan) для пропуска определенного запроса с помощью именованных параметров
В этом примере мы видим все query_id
результаты, которые являются частью любых инструкций курсора обновления, которые вынуждены выполняться функцией APC.
SELECT qry.query_id,
pl.plan_forcing_type_desc,
pl.is_forced_plan,
pl.plan_id
FROM sys.query_store_plan AS pl
INNER JOIN sys.query_store_query AS qry
ON qry.query_id = pl.query_id
WHERE pl.query_plan LIKE '%StatementType="UPDATE CURSOR"%'
AND pl.is_forced_plan > 0
AND pl.plan_forcing_type = 2;
В зависимости от результатов предыдущего запроса query_id
значением 42
является запрос, который должен игнорироваться APC. Мы можем использовать именованную версию параметра синтаксиса sp_configure_automatic_tuning
следующим образом.
EXECUTE sys.sp_configure_automatic_tuning
@option = 'FORCE_LAST_GOOD_PLAN',
@type = 'QUERY',
@type_value = 42,
@option_value = 'OFF';
Проверьте, применяется ли параметр.
SELECT *
FROM sys.database_automatic_tuning_configurations;
В. Настройте автоматическую настройку (параметр Force Last Good Plan) для применения расширенной регрессии плана на основе времени к конкретному запросу
Область применения: База данных SQL Azure, база данных SQL в Microsoft Fabric:
APC использует проверку регрессии плана на основе времени, которая возникает через пять минут после обнаружения изменения плана. Эта проверка позволяет APC избежать предвзятости своих проверок регрессии для запросов, которые выполняются быстро. APC учитывает выполнение запросов, которые могут выполняться дольше или подвержены времени ожидания из-за изменения плана.
В следующем примере показано, как настроить автоматическую настройку для применения расширенной логики проверки к запросу, если он имеет право на автоматическое принудительное применение плана. В этом примере используется значение 442
query_id
, выбранное из хранилище запросов.
EXECUTE sys.sp_configure_automatic_tuning 'FORCE_LAST_GOOD_PLAN_EXTENDED_CHECK', 'QUERY', 442, 'ON';