La función del plan de fuerza de la tienda de consultas no funciona


12

La función del plan de consulta de Force Force no parece estar aplicando el plan.

Soy consciente de Query Store: Forzado no siempre significa forzado ; sin embargo, mi plan puede no cambiar de manera insignificante, pero el optimizador de consultas puede continuar eligiendo índices incorrectos, opciones de bucle, etc.

Básicamente: no honra mi elección forzada del plan. He forzado muchos planes y simplemente no funciona .

  1. Hay 0 recuentos de fallas o razones cuando miro sys.query_store_plan force_failure_count.
  2. El evento extendido query_store_plan_forcing_failedno produce nada. 0 eventos.

Por ejemplo, un plan que fue forzado el 20.09. Solo 1 compilación pasó a usar el plan forzado.

Planes de consulta

Los planes difieren enormemente, uno usa Hash Match join con INDEX 1, el otro usa Loop Join con INDEX 2.

Diferentes planes

Versión: Microsoft SQL Server 2016 (SP1-GDR) (KB3210089) - 13.0.4202.2 (X64)

¿Que me estoy perdiendo aqui?

Respuestas:


16

De sys.query_store_plan (Transact-SQL) (énfasis agregado)

Planificar limitaciones de forzamiento

Query Store tiene un mecanismo para exigir Query Optimizer para usar cierto plan de ejecución. Sin embargo, existen algunas limitaciones que pueden evitar que se aplique un plan .

Primero, si el plan contiene las siguientes construcciones:

  • Insertar declaración masiva.
  • Referencia a una tabla externa.
  • Consulta distribuida u operaciones de texto completo
  • Uso de consultas globales
  • Cursores
  • Especificación de unión en estrella no válida

Estás usando un cursor.


A menudo puede forzar un plan de cursor con una guía de plan en su lugar. Consulte Uso de la sugerencia de consulta USE PLAN en consultas con cursores .

Y sí, estoy de acuerdo en que la situación actual no contribuye a la mejor experiencia de usuario. Esperaría que intentar forzar un plan para algo que no se puede forzar (actualmente) generaría un error o advertencia, o registraría algo. Puede registrar un elemento de Comentarios para solicitar una mejora en esta área.


A partir de SQL 2019, se admite el plan de ejecución de consultas CTP 2.3 forzado para avance rápido y cursores estáticos

Query Store ahora admite la capacidad de forzar planes de ejecución de consultas para cursores T-SQL y API rápidos y estáticos. El forzado ahora es compatible a través de los sp_query_store_force_planinformes de SQL Server Management Studio Query Store.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.