T-SQL - OPTION (FAST x) e flag di traccia 8722


9

Ho cercato a lungo e non ho ancora trovato la risposta al mio problema.

Dynamics AX sta generando query con il suggerimento per la query OPTION (FAST x), che a volte impone l'utilizzo di un piano di esecuzione errato. Gli sviluppatori dicono che è di default ed è difficile da cambiare (deve essere risolto su tutti i moduli potenzialmente).

Quindi stavo cercando un modo per sovrascrivere questi suggerimenti usando i flag di traccia. Ho trovato il delizioso flag di traccia 8722 che si dice faccia fare in modo che SQL Server ignori alcuni suggerimenti per le query, specialmente quelli nella clausola OPTION.

Tuttavia, questo non funziona nel mio caso. Ho provato ad abilitare anche il flag di traccia 8602 (disabilita i suggerimenti sull'indice), ma la mia query è ancora in esecuzione con il suggerimento FAST x (è molto più lenta di quando rimuovo effettivamente la clausola OPTION).

Ho provato a svuotare anche la cache del piano, senza risultati.

Qualche idea? Mi sto perdendo qualcosa?

PS Ho abilitato i flag di traccia a livello globale, questa è l'edizione per sviluppatori di SQL Server 2012


1
Come hai attivato i flag di traccia? L'hai acceso tramite l'avvio del server o utilizzando dbcc traceon? dbcc traceon è un flag di traccia per connessione, quindi l'attivazione in una connessione client non influisce sulle altre connessioni al server. Per attivarlo a livello di server, è necessario aggiungere -T <traceflagnumber> alla riga di comando di avvio. Credo che potresti essere in grado di utilizzare un traceon dbcc (flag1, flag2, ..., - 1) per applicarlo a livello di server, ma non l'ho mai provato.
Mike,

Ciao Mike, ho abilitato i flag di traccia a livello globale usando DBCC TRACEON (8722, -1) e poi ho controllato lo stato con DBCC TRACESTATUS. Forse il flag di traccia non è più ufficialmente supportato o in realtà ho bisogno di inserirlo nel parametro di avvio e riavviare il servizio, oppure è l'oggetto di CU3 (sto eseguendo 2012 SP2 RTM).

Risposte:


10

Per quanto ne so, i flag di traccia 8722, 8755 e 8602 non sono mai stati documentati ufficialmente. L'ultima volta che ricordo che erano efficaci è stato in SQL Server 2000, quindi non sorprende tremendamente che vengano ignorati in SQL Server 2012.

Per specifici schemi di query, è spesso possibile rimuovere il FAST nsuggerimento utilizzando le guide di piano. Anche così, la soluzione migliore è convincere gli sviluppatori AX a risolverlo dal lato dell'applicazione.

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.