Compartir a través de


Retroalimentación de estimación de cardinalidad (CE) para expresiones

Se aplica a:SQL Server 2025 (17.x) Versión preliminarBase de datos SQL de AzureBase de datos SQL en Microsoft Fabric

Las estimaciones de cardinalidad inexactas suelen provocar un rendimiento deficiente durante la optimización de consultas. La retroalimentación de estimación de cardinalidad (CE) para expresiones amplía el sistema iniciado por la función de retroalimentación de CE. El objetivo es mejorar las estimaciones de cardinalidad para las expresiones repetidas. La retroalimentación de la función de expresiones aprende de las ejecuciones anteriores de expresiones a través de consultas, para identificar las opciones adecuadas del modelo de CE y aplicar lo aprendido en las futuras ejecuciones de dichas expresiones. Al igual que los comentarios de CE, las recomendaciones del modelo se prueban y se aplican automáticamente a futuras ejecuciones de consultas.

La función de comentarios de expresiones identifica y usa una suposición de modelo que mejor se ajusta a la expresión y la distribución de datos de una consulta determinada, lo cual a su vez mejora la calidad del plan de ejecución de la consulta. Actualmente, la funcionalidad de retroalimentación para expresiones puede identificar operadores del plan en los que el número estimado de filas y el número real de filas son muy diferentes. La retroalimentación se aplica a las expresiones dentro de una consulta cuando se producen errores significativos de estimación del modelo y hay un modelo alternativo viable que se puede probar.

Las distintas versiones del motor de base de datos usan suposiciones de modelo de CE diferentes , en función de cómo se distribuyen y consultan los datos.

Cómo funciona

Aunque las huellas digitales no son un concepto nuevo con el motor de base de datos de SQL Server, una huella digital en el contexto de la característica de comentarios para expresiones hace referencia a la combinación de las firmas calculadas desde dentro de una expresión. Por ejemplo, un analista de negocios en una empresa ficticia podría querer obtener información sobre cualquiera de los pedidos de sus clientes en los que esos clientes gastaron más de $10.000. Una instrucción select que implica la recopilación de datos de una tabla Customers que también se une a una tabla Orders podría ser una manera de ver este tipo de datos:

SELECT *
FROM Customer AS C
     INNER JOIN Orders AS O
         ON C.custkey = O.o_custkey
WHERE O.o_totalprice > 10000;

Para esta consulta, el optimizador de consultas puede elegir obtener datos de cada tabla: Customer, seguido Ordersde , seleccionar todas las columnas asociadas de ambas tablas y combinar los datos (con un filtro) donde el totalprice valor de un pedido es mayor que 10 000 USD. Cada paso de este proceso tiene una firma generada que constituye la huella digital que usa la característica de comentarios para expresiones.

La función se centra en expresiones con una coherente sobreestimación o subestimación de cardinalidad a través de consultas. Analiza dos patrones de carga de trabajo diferentes que actualmente no son aptos para los comentarios de CE:

  • Cargas de trabajo sin ejecuciones repetidas, pero que tienen patrones de expresión repetidos. Por ejemplo, un patrón de combinación usado habitualmente.

  • Las consultas en las que una parte de la consulta puede beneficiarse de un modelo de CE diferente a otra parte de la misma consulta. Por ejemplo, la combinación entre las tablas A y B podría requerir una contención sencilla, y la combinación entre las tablas C y D podría requerir una contención básica.

La retroalimentación de la función de expresiones aplica suposiciones de filtro y de unión para corregir problemas de estimación incorrecta, como:

Filtros:

  • ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES
  • ASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATES
  • ASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES

Une:

  • ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS
  • Suposición de contención base (no es necesario pasar ninguna sugerencia)

Uso de comentarios de CE para expresiones

Para habilitar los comentarios de la característica de expresiones para una base de datos, se requieren los siguientes requisitos previos:

  • La base de datos debe usar el nivel de compatibilidad 160 o posterior.

  • La CE_FEEDBACK_FOR_EXPRESSIONS configuración con ámbito de base de datos debe estar habilitada.

La CE_FEEDBACK_FOR_EXPRESSIONS configuración con ámbito de base de datos está habilitada de forma predeterminada.

Puede asegurarse de que una base de datos usa los comentarios de la característica de expresiones en la versión preliminar de SQL Server 2025 (17.x) ejecutando las siguientes instrucciones:

ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;

Para deshabilitar la función de retroalimentación de expresiones de una base de datos, deshabilite la CE_FEEDBACK_FOR_EXPRESSIONS configuración con alcance de base de datos:

ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
  • La retroalimentación de CE para la actividad de expresiones es visible a través de los eventos extendidos adhoc_ce_feedback_query_level_telemetry, query_adhoc_ce_feedback_expression_hint, y query_adhoc_ce_feedback_hint. Los eventos extendidos de CE Feedback query_ce_feedback_begin_analysis y query_ce_feedback_telemetry también pueden ser útiles al realizar el seguimiento de la actividad de la funcionalidad.

  • Hay un nuevo administrador de memoria conocido como AdHocCEFeedbackCache donde se almacenan en caché los datos de huellas digitales. Se puede acceder a la memoria caché a través de una nueva vista de catálogo del sistema, sys.dm_exec_ce_feedback_cache.

Limitaciones

Actualmente, la característica de comentarios de CE para expresiones no contiene las siguientes características:

  • Persistencia: la persistencia del Almacén de consultas de la tabla de huellas digitales y las sugerencias de nivel de expresión estarán disponibles en un CTP posterior. Tras reiniciar SQL Server, la función de retroalimentación para expresiones debe reaprender y aplicar sugerencias a la carga de trabajo actual.