SQL Server 2019 e l'hint QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n
Oggi cambiamo argomento continuando nel nostro percorso che ci portato in queste ultime settimane a parlare delle tante novitΓ introdotte dalla versione 2019 di SQL Server ormai in arrivo.
Premessa importante: vedete questa novitΓ che adesso vi racconterΓ² come l'ultima via d'uscita nel caso in cui abbiate aumentato il livello di compatibilitΓ della vostra applicazione che si appoggia a SQL Server e vi troviate ad avere una Query che manifesta dei problemi!
Parliamo infatti della introduzione di un nuovo hint da specificare alla fine della nostra Query chiamato: QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n.
Microsoft stessa deve essere stata tanto convinta dell'utilitΓ di questo hint da introdurlo anche su SQL Server 2017 previo aggiornamento al CU (cumulative upadate) 10 tramite la patch KB4342424.
Microsoft stessa deve essere stata tanto convinta dell'utilitΓ di questo hint da introdurlo anche su SQL Server 2017 previo aggiornamento al CU (cumulative upadate) 10 tramite la patch KB4342424.
Ma vediamo di cosa si tratta.
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n
Attraverso l'hint QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n abbiamo la possibilitΓ di forzare il comportamento dell'optimizer a livello della singola Query portandolo ad un livello di compatibilitΓ diverso da quello impostato di default.
n rappresenta il livello di compatilitΓ scelto tra i valori 100,110,120,130,140 e 150.
GiΓ ma come si usa?
Vediamolo assieme!
Supponiamo che la vostra applicazione giri con un livello di compatilitΓ 100 (SQL 2008/ SQL 2008 R2) e decidete che oggi Γ¨ giunto il fatidico momento di aumentare il livello di compatilitΓ ad esempio a 150.
Tutto funziona correttamente tranne che per una Query che Γ¨ regredita nel senso che dopo l'aumento di livello di compatibilitΓ impiega piΓΉ tempo di prima.
Cosa potete fare?
beh, per ovviare potete aggiungere alla fine della vostra query l' hint sotto:
OPTION(USE HINT('QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_100’))
In questo modo quando la nostra Query verrΓ eseguita l'optimizer di SQL Server si comporterΓ come se la Query girasse su SQL Server 2008 e quindi con un livello di compatibilitΓ pari a 100.Ovviamente sottolineo nuovamente si tratta di una soluzione provvisoria.
OccorrerΓ infatti mettere mano alla Query ed ottimizzarla in funzione della nuova versione di SQL Server installata.
Ma come rimedio tampone da applicare al volo ...Γ¨ una ottima soluzione per trarsi l'impaccio!
Alla prossima!
Luca
Luca Biondi @ SQLServerPerformance blog!
Next post: SQL Server 2019 ed il Memory-Optimized TempDB Metadata
Previous post:Le Table Variables // Le novitΓ introdotte con SQL Server 2019. (Parte 2)

Comments
Post a Comment