Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: SQL Server 2025 (17.x)
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в Microsoft Fabric
Неточные оценки кратности часто вызывают низкую производительность во время оптимизации запросов. Оценка кратности (CE) для выражений расширяет структуру, начатую функцией обратной связи CE. Цель — улучшить оценки кратности для повторяющихся выражений. Функция обратной связи для выражений учится на предыдущих выполнениях выражений в запросах, чтобы находить подходящие варианты моделей CE и применять полученные результаты к будущим выполнениям этих выражений. Как и обратная связь CE, рекомендации модели тестируются и применяются автоматически к будущему выполнению запросов.
Функция обратной связи для выражений определяет и использует предположение модели, которое лучше соответствует выражению и распределению данных данного запроса, тем самым улучшая качество плана выполнения запроса. В настоящее время функция обратной связи для выражений может определить операторы плана, где оценочное количество строк и фактическое количество строк сильно различаются. Обратная связь применяется к выражениям в запросе при возникновении существенных ошибок оценки модели, если существует жизнеспособная альтернативная модель для тестирования.
В разных версиях ядра СУБД используются различные предположения модели CE , основанные на том, как распределяются и запрашиваются данные.
Использование отзывов CE для выражений
Обратная связь CE для выражений наблюдает за исполнением запросов и выявляет подвыражения, которые последовательно приводят к неправильному оцениванию кратности. Обратная связь создается на основе наблюдаемых шаблонов и применяется во время компиляции запросов для повышения точности оценки.
Предварительные требования и конфигурация
Чтобы использовать обратную связь CE для выражений, необходимо выполнить следующие предварительные требования:
- База данных должна использовать уровень совместимости 160 или более поздней версии.
-
CE_FEEDBACK_FOR_EXPRESSIONSКонфигурация с областью базы данных должна быть включена (включена по умолчанию). - Чтобы проверить текущее состояние конфигурации базы данных, выполните следующие действия.
SELECT name,
value,
value_for_secondary
FROM sys.database_scoped_configurations
WHERE name = 'CE_FEEDBACK_FOR_EXPRESSIONS';
Эту функцию можно включить в базе данных с помощью следующей команды конфигурации базы данных:
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;
Чтобы отключить функцию обратной связи для выражений для базы данных, отключите конфигурацию, охватывающую базу данных CE_FEEDBACK_FOR_EXPRESSIONS.
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
Принцип работы
Хотя отпечатки пальцев не являются новой концепцией ядра СУБД SQL Server, отпечатки пальцев в контексте обратной связи для функций выражений относятся к сочетанию вычисляемых подписей из выражения. Например, бизнес-аналитик в вымышленном бизнесе может пожелать получить информацию о любом из заказов своих клиентов, где эти клиенты потратили более 10 000 долларов. Оператор выбора, который включает сбор данных из таблицы Customers, присоединяясь также к таблице Orders, может быть одним из методов просмотра данных этого типа.
SELECT *
FROM Customer AS C
INNER JOIN Orders AS O
ON C.custkey = O.o_custkey
WHERE O.o_totalprice > 10000;
Для этого запроса оптимизатор запросов может выбрать получение данных из каждой таблицы, Customerа затем Ordersвыбрать все связанные столбцы из обеих таблиц и присоединить данные (с фильтром), где totalprice заказ превышает $10 000.
Каждое логическое выражение, например фильтр или соединение в плане запроса, создает подпись, которая способствует отпечатку пальца. Отзывы CE для выражений используют эти отпечатки пальцев для изучения и применения обратной связи между запросами, которые совместно используют аналогичные вложенные выражения, даже если общая структура запросов отличается.
Эта функция фокусируется на выражениях с согласованной кратностью переоценки или недооценки в запросах. Он анализирует два разных шаблона рабочей нагрузки, которые в настоящее время не подходят для обратной связи CE.
Рабочие нагрузки без повторяющихся выполнений, но с повторяющихся шаблонами выражений. Например, часто используемый шаблон соединения.
Запросы, в которых одна часть запроса может воспользоваться другой моделью CE, отличной от другой части одного запроса. Например, соединение между таблицами
AиBможет потребовать простого связывания, а соединение между таблицамиCиDможет потребовать основного связывания.
Функция отзывов для выражений применяет предполагаемые фильтры и соединения для исправления проблем с неправильной оценкой, таких как:
Filters:
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATESASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATESASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES
Joins:
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS- Предположение о локализации базы (передавать подсказку не требуется)
Эти предположения отражают различные стратегии модели CE, такие как сдерживание и независимость. Дополнительные концептуальные сведения см. в обзоре оценки кратности, объясняемой Кейт Смитом и оценкой кратности для коррелированных столбцов в SQL Server 2016.
Жизненный цикл подсказки
Подсказки обратной связи проходят через следующие состояния:
- Мониторинг: система наблюдает повторяющиеся выполнения подвыражений и отслеживает, сохраняется ли неправильная оценка кардинальности.
- Применение. Если неправильное определение продолжается, можно создать и применить подсказку обратной связи во время компиляции запросов для корректировки модели CE.
- Заблокировано: если примененная подсказка приводит к неоптимальной оценке кратности, она блокируется для дальнейшего использования.
Этот жизненный цикл гарантирует, что обратная связь применяется только в том случае, если полезно и избегает регрессии в качестве оценки.
Защита регрессии
Обратная связь CE для выражений включает защиту от регрессии. Если подсказка вызывает худшую оценку кратности, чем раньше, она блокируется. Однако эта защита ограничена оценкой кратности и не оценивает время выполнения запроса. Для выполнения или времени выполнения связанных с регрессиями автоматическое исправление плана может вмешаться. Если функция автоматического исправления плана не включена, действия, которые она выполняла бы, записываются и доступны через запрос к динамическому административному представлению sys.dm_db_tuning_recommendations.
Телеметрия и мониторинг
Отслеживание отзывов CE для выражений можно выполнять с помощью следующих инструментов:
- Расширенные события:
adhoc_ce_feedback_query_level_telemetryquery_adhoc_ce_feedback_expression_hintquery_adhoc_ce_feedback_hint
Расширенные события CE Feedback query_ce_feedback_begin_analysis и query_ce_feedback_telemetry также могут быть полезны при отслеживании активности функции.
Данные отпечатков пальцев кэшируются в выделенном клерке памяти с именем
AdHocCEFeedbackCache. Доступ к этому кэшу можно получить с помощью представленияsys.dm_exec_ce_feedback_cacheсистемного каталога.Интеграция Showplan
При применении обратной связи CE для выражений план запроса включает
CardinalityFeedbackатрибут в XML Showplan. Этот тег указывает, что обратная связь использовалась для корректировки оценки кратности для конкретной подэкспрессии.
Кэш и сохраняемость
Сохраняемая информация обратной связи хранится во внутренней таблице хранилища запросов (sys.plan_persist_ce_feedback_for_expressions) и загружается заново при запуске. Это гарантирует, что система не нуждается в повторном получении отзывов о тех отпечатках пальцев, с которыми она уже столкнулась. Механизм сохраняемости кэша имеет потери данных в своей сути, т. е. данные сохраняются на диск только периодически. Частота сохраняемости в настоящее время не настраивается.
Если экземпляр SQL Server перезапускается или память очищается до начала следующего цикла сохранения, обратная связь, созданная с момента последнего сброса, может быть утрачена.
Limitations
Сохраняемость в настоящее время недоступна для хранилища запросов на доступных для чтения вторичных файлов. Обратная связь CE для выражений может применять отзывы по-разному к первичной реплике и вторичной реплике. Однако обратная связь не сохраняется на вторичных репликах и существует только в кэше на основе памяти в этом сценарии. Если происходит событие переключения на резервный, обратная связь, полученная на любом из доступных для чтения вторичных узлов, утрачивается.