Elaborazione di query intelligenti nei database SQL
Si applica a: SQL Server Database SQL di Azure Istanza 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.
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ì | 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) | Sì, a partire dal livello di compatibilità del database 160 | 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) | Sì, in anteprima, a partire dal livello di compatibilità del database 160 | 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) | Sì, a partire dal livello di compatibilità del database 160 | 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 | Sì, in anteprima, a partire dal livello di compatibilità del database 160 | 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 | Sì | 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 | Sì, a partire dal livello di compatibilità del database 160 | 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 | Sì | 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) | Sì, a partire dal livello di compatibilità del database 160 | 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 | Sì, a partire dal 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 | 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 | Sì | 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 | Sì | 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) | Sì |
Feedback sul grado di parallelismo (DOP) | Sì |
Esecuzione interleaved | No |
Feedback delle concessioni di memoria (modalità batch) | No |
Feedback delle concessioni di memoria (modalità riga) | No |
Feedback delle concessioni di memoria (in modalità percentile e persistenza) | Sì |
Forzatura del piano ottimizzato | Sì |
Inlining di funzioni definite dall'utente scalari | No |
Ottimizzazione del piano sensibile ai parametri | No, ma è consigliabile |
Compilazione posticipata delle variabili di tabella | No |
Contenuto correlato
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).
- Join (SQL Server)
- Modalità di esecuzione
- Guida sull'architettura di elaborazione delle query
- Guida di riferimento a operatori Showplan logici e fisici
- Novità di SQL Server 2017
- Novità di SQL Server 2019
- Novità di SQL Server 2022
- Feedback della concessione di memoria
- Dimostrazione dell'elaborazione di query intelligenti
- Valutazione delle espressioni ed elaborazione delle costanti
- Demo di elaborazione di query intelligenti in GitHub
- Centro prestazioni per il motore di database di SQL Server e il database SQL di Azure
- Monitorare le prestazioni tramite Query Store
- Procedure consigliate per monitorare i carichi di lavoro con Query Store