Elaborazione di query intelligenti nei database SQL

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

La famiglia di funzionalità di elaborazione di query intelligenti include funzionalità ad ampio spettro che migliorano le prestazioni di carichi di lavoro esistenti con un impegno minimo per l'implementazione. L'immagine seguente illustra in dettaglio la famiglia di funzionalità elaborazione di query intelligenti (IQP) e quando sono state introdotte per la prima volta per SQL Server. Tutte le funzionalità di elaborazione di query intelligenti sono disponibili in Istanza gestita di SQL di Azure e database SQL di Azure. Alcune funzionalità dipendono dal livello di compatibilità del database.

Diagramma della serie di funzionalità di elaborazione di query intelligenti e quando sono state introdotte per la prima volta in SQL Server.

Guardare questo video per una panoramica sull'elaborazione di query intelligenti:

Per demo e codice di esempio delle funzionalità di elaborazione di query intelligenti (IQP) in GitHub, visitare https://aka.ms/IQPDemos.

È possibile impostare automaticamente i carichi di lavoro come idonei all'elaborazione di query intelligenti abilitando il livello di compatibilità applicabile per il database. Questa opzione è impostabile con Transact-SQL. Ad esempio:

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;

La tabella seguente illustra nel dettaglio tutte le funzionalità di elaborazione di query intelligenti con i rispettivi requisiti per il livello di compatibilità del database. Per informazioni dettagliate su tutte le funzionalità di elaborazione di query intelligenti (IQP), incluse note sulla versione e descrizioni più approfondite, vedere Informazioni dettagliate sulle funzionalità di elaborazione di query intelligenti (IQP).

Funzionalità di elaborazione di query intelligenti (IQP) per database SQL di Azure e SQL Server 2022 (16.x)

Funzionalità di elaborazione di query intelligenti Supportato in database SQL di Azure Supportato in SQL Server 2022 (16.x) Descrizione
Join adattivi (modalità batch) Sì, a partire dal livello di compatibilità del database 140 Sì, a partire da SQL Server 2017 (14.x) con livello di compatibilità del database 140 I join adattivi selezionano in modo dinamico un tipo di join in fase di esecuzione in base alle righe di input effettive.
Count Distinct approssimato Sì, a partire da SQL Server 2019 (15.x) Consente di offrire il COUNT DISTINCT approssimativo per gli scenari Big Data con il vantaggio di prestazioni elevate mantenendo basso il footprint di memoria.
Percentile approssimativo Sì, a partire dal livello di compatibilità del database 110 Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità 110 Calcolare rapidamente i percentili per un set di dati di grandi dimensioni con limiti di errore basati su classificazione accettabili per prendere decisioni rapide usando funzioni di aggregazione percentile approssimative.
Modalità batch per rowstore Sì, a partire dal livello di compatibilità del database 150 Sì, a partire da SQL Server 2019 (15.x) con livello di compatibilità 150 Consente di specificare la modalità batch per i carichi di lavoro del data warehouse relazionale associati alla CPU senza richiedere gli indici columnstore.
Feedback stima di cardinalità (CE) No Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità 160 Adatta automaticamente le stime della cardinalità per le query ripetute per ottimizzare i carichi di lavoro in cui presupposti di stime di cardinalità inefficienti causano scarse prestazioni di query. Il feedback stima di cardinalità identificherà e userà un presupposto del modello più adatto a una determinata query e distribuzione dei dati per migliorare la qualità del piano di esecuzione delle query.
Feedback del grado di parallelismo (DOP) No Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità del database 160 Adatta automaticamente il grado di parallelismo delle query ripetute per ottimizzare i carichi di lavoro in cui un parallelismo inefficiente può causare problemi di prestazioni. Richiede l'abilitazione di Query Store.
Esecuzione interleaved Sì, a partire dal livello di compatibilità del database 140 Sì, a partire da SQL Server 2017 (14.x) con livello di compatibilità del database 140 Consente di usare la cardinalità effettiva della funzione con valori di tabella con istruzioni multiple rilevata nella prima compilazione invece di una stima fissa.
Feedback delle concessioni di memoria (modalità batch) Sì, a partire dal livello di compatibilità del database 140 Sì, a partire da SQL Server 2017 (14.x) con livello di compatibilità del database 140 Se una query in modalità batch contiene operazioni che eseguono lo spill su disco, aggiungere altra memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Feedback delle concessioni di memoria (modalità riga) Sì, a partire dal livello di compatibilità del database 150 Sì, a partire da SQL Server 2019 (15.x) con livello di compatibilità del database 150 Se una query in modalità riga contiene operazioni che eseguono lo spill su disco, aggiungere altra memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Feedback della concessione di memoria (Percentile) Sì, abilitato in tutti i database Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità del database 140 Risolve le limitazioni esistenti del feedback delle concessioni di memoria in modo non invasivo incorporando l'esecuzione di query precedenti per perfezionare il feedback.
Persistenza del feedback delle concessioni di memoria Sì, abilitato in tutti i database Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità del database 140 Fornisce nuove funzionalità per mantenere il feedback delle concessioni di memoria. È necessario che Query Store sia abilitato per il database e impostato in modalità READ_WRITE.
Persistenza feedback della stima di cardinalità (CE) No Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità del database 160 È necessario che Query Store sia abilitato per il database e impostato in modalità READ_WRITE.
Persistenza feedback sul grado di parallelismo No Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità del database 160 È necessario che Query Store sia abilitato per il database e impostato in modalità READ_WRITE.
Forzatura del piano ottimizzato No Sì, a partire da SQL Server 2022 (16.x). Riduce il sovraccarico di compilazione per le query ripetitive imposte. Per altre informazioni, vedere Uso forzato del piano ottimizzato con Query Store.
Inlining di funzioni definite dall'utente scalari Sì, a partire dal livello di compatibilità del database 150 Sì, a partire da SQL Server 2019 (15.x) con livello di compatibilità del database 150 Le funzioni definite dall'utente scalari vengono trasformate in espressioni relazionali equivalenti che vengono rese inline nella query chiamante, ottenendo spesso significativi miglioramenti delle prestazioni.
Ottimizzazione del piano sensibile ai parametri No Sì, a partire da SQL Server 2022 (16.x) con livello di compatibilità del database 160 L’ottimizzazione del piano sensibile ai parametri fa riferimento allo scenario in cui un singolo piano memorizzato nella cache per una query con parametri non risulta ottimale per tutti i possibili valori dei parametri in ingresso, ad esempio le distribuzioni di dati non uniformi.
Compilazione posticipata delle variabili di tabella Sì, a partire dal livello di compatibilità del database 150 Sì, a partire da SQL Server 2019 (15.x) con livello di compatibilità del database 150 Consente di usare la cardinalità effettiva della variabile tabella rilevata nella prima compilazione invece di una stima fissa.

Funzionalità di elaborazione di query intelligenti (IQP) per Istanza gestita di SQL di Azure

Funzionalità di elaborazione di query intelligenti Supportata in Istanza gestita di SQL di Azure Descrizione
Join adattivi (modalità batch) Sì, a partire dal livello di compatibilità del database 140 I join adattivi selezionano in modo dinamico un tipo di join in fase di esecuzione in base alle righe di input effettive.
Count Distinct approssimato Consente di offrire il COUNT DISTINCT approssimativo per gli scenari Big Data con il vantaggio di prestazioni elevate mantenendo basso il footprint di memoria.
Percentile approssimativo Sì, a partire dal livello di compatibilità del database 110 Calcolare rapidamente i percentili per un set di dati di grandi dimensioni con limiti di errore basati su classificazione accettabili per prendere decisioni rapide usando funzioni di aggregazione percentile approssimative.
Modalità batch per rowstore Sì, a partire dal livello di compatibilità del database 150 Consente di specificare la modalità batch per i carichi di lavoro del data warehouse relazionale associati alla CPU senza richiedere gli indici columnstore.
Feedback stima di cardinalità (CE) No Regola automaticamente le stime della cardinalità per le query ripetute per ottimizzare i carichi di lavoro dove i presupposti di stima di cardinalità inefficienti causano scarse prestazioni di query. Il feedback stima di cardinalità identificherà e userà un presupposto del modello più adatto a una determinata query e distribuzione dei dati per migliorare la qualità del piano di esecuzione delle query.
Feedback del grado di parallelismo (DOP) No Regola automaticamente il grado di parallelismo delle query ripetute per ottimizzare i carichi di lavoro in cui un parallelismo inefficiente può causare problemi di prestazioni. Richiede l'abilitazione di Query Store.
Esecuzione interleaved Sì, a partire dal livello di compatibilità del database 140 Consente di usare la cardinalità effettiva della funzione con valori di tabella con istruzioni multiple rilevata nella prima compilazione invece di una stima fissa.
Feedback delle concessioni di memoria (modalità batch) Sì, a partire dal livello di compatibilità del database 140 Se una query in modalità batch contiene operazioni che eseguono lo spill su disco, aggiungere altra memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Feedback delle concessioni di memoria (modalità riga) Sì, a partire dal livello di compatibilità del database 150 Se una query in modalità riga contiene operazioni che eseguono lo spill su disco, aggiungere altra memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Feedback della concessione di memoria (Percentile) No Risolve le limitazioni esistenti del feedback delle concessioni di memoria in modo non invasivo incorporando l'esecuzione di query precedenti per perfezionare il feedback.
Persistenza del feedback di concessioni di memoria, stima di cardinalità (CE) e grado di parallelismo (DOP) Sì, a partire dal livello di compatibilità del database 160 Fornisce nuove funzionalità per mantenere il feedback delle concessioni di memoria. Il feedback di stima di cardinalità (CE) e grado di parallelismo (DOP) è sempre persistente. È necessario che Query Store sia abilitato per il database e impostato in modalità READ_WRITE.
Forzatura del piano ottimizzato No Riduce il sovraccarico di compilazione per le query ripetitive imposte. Per altre informazioni, vedere Uso forzato del piano ottimizzato con Query Store.
Inlining di funzioni definite dall'utente scalari Sì, a partire dal livello di compatibilità del database 150 Le funzioni definite dall'utente scalari vengono trasformate in espressioni relazionali equivalenti che vengono rese inline nella query chiamante, ottenendo spesso significativi miglioramenti delle prestazioni.
Ottimizzazione del piano sensibile ai parametri No L’ottimizzazione del piano sensibile ai parametri fa riferimento allo scenario in cui un singolo piano memorizzato nella cache per una query con parametri non risulta ottimale per tutti i possibili valori dei parametri in ingresso, ad esempio le distribuzioni di dati non uniformi.
Compilazione posticipata delle variabili di tabella Sì, a partire dal livello di compatibilità del database 150 Consente di usare la cardinalità effettiva della variabile tabella rilevata nella prima compilazione invece di una stima fissa.

Funzionalità di elaborazione di query intelligenti (IQP) per SQL Server 2019 (15.x)

Funzionalità di elaborazione di query intelligenti Supportato in SQL Server 2019 (15.x) Descrizione
Join adattivi (modalità batch) Sì, a partire da SQL Server 2017 (14.x) con livello di compatibilità del database 140 I join adattivi selezionano in modo dinamico un tipo di join in fase di esecuzione in base alle righe di input effettive.
Count Distinct approssimato Consente di offrire il COUNT DISTINCT approssimativo per gli scenari Big Data con il vantaggio di prestazioni elevate mantenendo basso il footprint di memoria.
Modalità batch per rowstore Sì, a partire dal livello di compatibilità del database 150 Consente di specificare la modalità batch per i carichi di lavoro del data warehouse relazionale associati alla CPU senza richiedere gli indici columnstore.
Esecuzione interleaved Sì, a partire dal livello di compatibilità del database 140 Consente di usare la cardinalità effettiva della funzione con valori di tabella con istruzioni multiple rilevata nella prima compilazione invece di una stima fissa.
Feedback delle concessioni di memoria (modalità batch) Sì, a partire dal livello di compatibilità del database 140 Se una query in modalità batch contiene operazioni che eseguono lo spill su disco, aggiungere altra memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Feedback delle concessioni di memoria (modalità riga) Sì, a partire dal livello di compatibilità del database 150 Se una query in modalità riga contiene operazioni che eseguono lo spill su disco, aggiungere altra memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Inlining di funzioni definite dall'utente scalari Sì, a partire dal livello di compatibilità del database 150 Le funzioni definite dall'utente scalari vengono trasformate in espressioni relazionali equivalenti che vengono rese inline nella query chiamante, ottenendo spesso significativi miglioramenti delle prestazioni.
Compilazione posticipata delle variabili di tabella Sì, a partire dal livello di compatibilità del database 150 Consente di usare la cardinalità effettiva della variabile tabella rilevata nella prima compilazione invece di una stima fissa.

Funzionalità di elaborazione di query intelligenti (IQP) per SQL Server 2017 (14.x)

Funzionalità di elaborazione di query intelligenti Supportato in SQL Server 2017 (14.x) Descrizione
Join adattivi (modalità batch) Sì, a partire da SQL Server 2017 (14.x) con livello di compatibilità del database 140 I join adattivi selezionano in modo dinamico un tipo di join in fase di esecuzione in base alle righe di input effettive.
Count Distinct approssimato Consente di offrire il COUNT DISTINCT approssimativo per gli scenari Big Data con il vantaggio di prestazioni elevate mantenendo basso il footprint di memoria.
Esecuzione interleaved Sì, a partire dal livello di compatibilità del database 140 Consente di usare la cardinalità effettiva della funzione con valori di tabella con istruzioni multiple rilevata nella prima compilazione invece di una stima fissa.
Feedback delle concessioni di memoria (modalità batch) Sì, a partire dal livello di compatibilità del database 140 Se una query in modalità batch contiene operazioni che eseguono lo spill su disco, aggiungere altra memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.

Requisito di Query Store

Varie Funzionalità di elaborazione di query intelligenti richiedono l'abilitazione di Query Store per trarre vantaggio dal database utente. Per abilitare Query Store, vedere Abilitare Query Store.

Funzionalità di elaborazione di query intelligenti È necessario che Query Store sia abilitato e impostato in modalità READ_WRITE
Join adattivi (modalità batch) No
Count Distinct approssimato No
Percentile approssimativo No
Modalità batch per rowstore No
Feedback sulla stima di cardinalità (CE)
Feedback sul grado di parallelismo (DOP)
Esecuzione interleaved No
Feedback delle concessioni di memoria (modalità batch) No
Feedback delle concessioni di memoria (modalità riga) No
Feedback delle concessioni di memoria (modalità percentile e persistenza)
Forzatura del piano ottimizzato
Inlining di funzioni definite dall'utente scalari No
Ottimizzazione del piano sensibile ai parametri No, ma è consigliabile
Compilazione posticipata delle variabili di tabella No

Per informazioni dettagliate su tutte le funzionalità di elaborazione di query intelligenti (IQP), incluse note sulla versione e descrizioni più approfondite, vedere Informazioni dettagliate sulle funzionalità di elaborazione di query intelligenti (IQP).