Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подходит для:Подходит для: SQL Server 2025 (17.x) предварительная версия
Azure SQL Database
SQL баз данных в Microsoft Fabric
Неточные оценки кратности часто вызывают низкую производительность во время оптимизации запросов. Оценка кратности (CE) для выражений расширяет структуру, начатую функцией обратной связи CE. Цель — улучшить оценки кратности для повторяющихся выражений. Функция обратной связи для выражений учится на предыдущих выполнениях выражений в запросах, чтобы находить подходящие варианты моделей CE и применять полученные результаты к будущим выполнениям этих выражений. Как и обратная связь CE, рекомендации модели тестируются и применяются автоматически к будущему выполнению запросов.
Функция обратной связи для выражений определяет и использует предположение модели, которое лучше соответствует выражению и распределению данных данного запроса, тем самым улучшая качество плана выполнения запроса. В настоящее время функция обратной связи для выражений может определить операторы плана, где оценочное количество строк и фактическое количество строк сильно различаются. Обратная связь применяется к выражениям в запросе при возникновении существенных ошибок оценки модели, если существует жизнеспособная альтернативная модель для тестирования.
В разных версиях ядра СУБД используются различные предположения модели CE , основанные на том, как распределяются и запрашиваются данные.
Принцип работы
Хотя отпечатки пальцев не являются новой концепцией ядра СУБД 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, отличной от другой части одного запроса. Например, соединение между таблицами A и B может потребовать простого хранения и соединения между таблицами C и D, которые могут потребовать хранения базы.
Функция отзывов для выражений применяет предполагаемые фильтры и соединения для исправления проблем с неправильной оценкой, таких как:
Фильтры:
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES
ASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATES
ASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES
Соединения:
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS
- Предположение о локализации базы (передавать подсказку не требуется)
Использование отзывов CE для выражений
Чтобы включить обратную связь для функции выражений для базы данных, требуются следующие предварительные требования:
База данных должна использовать уровень совместимости 160 или выше.
Конфигурация с привязкой к базе данных должна быть включена.
Конфигурация CE_FEEDBACK_FOR_EXPRESSIONS
с областью базы данных включена по умолчанию.
Вы можете убедиться, что база данных использует обратную связь для функций выражений в предварительной версии SQL Server 2025 (17.x), выполнив следующие инструкции:
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;
Чтобы отключить функцию обратной связи для выражений для базы данных, отключите конфигурацию, охватывающую базу данных CE_FEEDBACK_FOR_EXPRESSIONS
.
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
Обратная связь CE для активности выражений отображается с помощью
adhoc_ce_feedback_query_level_telemetry
,query_adhoc_ce_feedback_expression_hint
, иquery_adhoc_ce_feedback_hint
расширенных событий. Расширенные события CE Feedbackquery_ce_feedback_begin_analysis
иquery_ce_feedback_telemetry
также могут быть полезны при отслеживании активности функции.В памяти появился новый компонент,
AdHocCEFeedbackCache
, где кэшируются данные отпечатков пальцев. Доступ к кэшу можно получить с помощью нового системного представленияsys.dm_exec_ce_feedback_cache
каталога.
Ограничения
Функция обратной связи CE для выражений в настоящее время не содержит следующих возможностей:
- Сохраняемость: Сохраняемость хранилища запросов для таблицы отпечатков и подсказок уровня выражений будут доступны в более поздней версии CTP. После перезапуска SQL Server функция обратной связи для выражений должна заново изучить и применить рекомендации к текущей рабочей нагрузке.