La funzione Piano di forza dell'archivio query non funziona


12

La funzionalità del piano Forza archivio query non sembra applicare il piano.

Sono a conoscenza di Query Store - Forced non significa sempre forzato ; tuttavia, il mio piano potrebbe non cambiare in modo insignificante, ma Query Optimizer potrebbe continuare a scegliere indici errati, scelte di loop ecc.

Fondamentalmente: non onora la mia scelta del piano forzato. Ho costretto molti piani e non funziona .

  1. Ci sono 0 conteggi di errori o ragioni quando guardo sys.query_store_plan force_failure_count.
  2. L'evento esteso query_store_plan_forcing_failednon produce nulla. 0 eventi.

Ad esempio, un piano che è stato costretto il 20.09. Solo una compilation è stata utilizzata per utilizzare il piano forzato.

Piani per la query

I piani differiscono selvaggiamente, uno con Hash Match join con INDEX 1, l'altro con Loop Join con INDEX 2.

Piani diversi

Versione: Microsoft SQL Server 2016 (SP1-GDR) (KB3210089) - 13.0.4202.2 (X64)

Cosa mi sto perdendo qui?

Risposte:


16

Da sys.query_store_plan (Transact-SQL) (enfasi aggiunta)

Pianificare i limiti di forzatura

Query Store ha un meccanismo per imporre lo Strumento per ottimizzare le query in modo da utilizzare determinati piani di esecuzione. Tuttavia, ci sono alcune limitazioni che possono impedire l'applicazione di un piano .

Innanzitutto, se il piano contiene le seguenti costruzioni:

  • Inserisci un'istruzione in blocco.
  • Riferimento a una tabella esterna
  • Query distribuita o operazioni full-text
  • Uso di query globali
  • Cursori
  • Specifica del join a stella non valida

Stai usando un cursore.


È spesso possibile forzare un piano del cursore con una guida del piano. Vedere Utilizzo del PIANO UTILIZZO Suggerimento per le query sulle query con i cursori .

E sì, sono d'accordo che la situazione attuale non offre la migliore esperienza utente. Mi aspetterei che il tentativo di forzare un piano per qualcosa che non può (attualmente) essere forzato genererebbe un errore o un avvertimento o registrasse qualcosa. È possibile registrare un elemento Feedback per richiedere un miglioramento in quest'area.


A partire da SQL 2019 CTP 2.3 è supportato il piano di esecuzione delle query per i cursori Avanzamento rapido e Statico

Query Store ora supporta la possibilità di imporre piani di esecuzione delle query per cursori T-SQL e API veloci e statici. La forzatura è ora supportata tramite sp_query_store_force_plano tramite i report dell'archivio query di SQL Server Management Studio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.