Raccomandazioni sulle prestazioni di Database Advisor per Azure SQL Database
Si applica a: Database SQL di Azure
Il database SQL di Azure è in grado di apprendere e di adattarsi all'applicazione Azure SQL Database dispone di numerosi advisor di database che forniscono raccomandazioni personalizzate che consentono di ottimizzare le prestazioni. Questi consulenti di database valutano e analizzano continuamente la cronologia di utilizzo e forniscono raccomandazioni basate su modelli di carico di lavoro che consentono di migliorare le prestazioni.
Panoramica delle prestazioni
Panoramica delle prestazioni offre un riepilogo delle prestazioni del database e consente di ottimizzare le prestazioni e risolvere i problemi.
- Il riquadro Raccomandazioni offre un elenco di raccomandazioni di ottimizzazione per il database (vengono visualizzate le tre raccomandazioni principali se ne sono presenti di più). Facendo clic su questo riquadro si passa alle opzioni di raccomandazione Prestazioni.
- Il riquadro Attività di ottimizzazione fornisce un riepilogo delle operazioni di ottimizzazione in corso e completate per il database e offre una vista rapida della cronologia delle attività di ottimizzazione. Se si fa clic su questo riquadro viene visualizzata la cronologia di ottimizzazione completa per il database.
- Il riquadro Ottimizzazione automatica mostra la configurazione di ottimizzazione automatica per il database (opzioni di ottimizzazione applicate automaticamente al database). Se si fa clic su questo riquadro viene visualizzata la finestra di dialogo di configurazione dell'automazione.
- Il riquadro Query su database visualizza un riepilogo delle prestazioni delle query per il database (uso complessivo di DTU e query con il maggior consumo di risorse). Se si fa clic su questo riquadro viene visualizzata la pagina Informazioni dettagliate prestazioni query.
Opzioni consigliate per le prestazioni
Le opzioni consigliate per le prestazioni disponibili in Azure SQL Database sono:
Raccomandazione sulle prestazioni | Supporto dei database singoli e in pool | Supporto del database dell'istanza |
---|---|---|
Creare raccomandazioni sugli indici : consiglia la creazione di indici che potrebbero migliorare le prestazioni del carico di lavoro. | Sì | No |
Suggerimenti per l'eliminazione degli indici: consiglia la rimozione giornaliera di indici ridondanti e duplicati, ad eccezione di indici univoci e indici non usati per molto tempo (>90 giorni). Si noti che questa opzione non è compatibile con le applicazioni che usano cambi di partizione e hint di indice. L'eliminazione di indici inutilizzati non è supportata per i livelli di servizio Premium e business critical. | Sì | No |
Parametrizzare le raccomandazioni sulle query (anteprima): consiglia la parametrizzazione forzata nei casi in cui si dispone di una o più query che vengono costantemente ricompilate, ma finiscono con lo stesso piano di esecuzione della query. | Sì | No |
Correzione dei problemi di schema consigliati (anteprima): le raccomandazioni per la correzione dello schema vengono visualizzate quando Azure SQL Database rileva un'anomalia nel numero di errori SQL correlati allo schema che si verificano nel database. Le raccomandazioni relative alla correzione dei problemi di schema sono attualmente in fase di deprecazione. | Sì | No |
Per applicare raccomandazioni sulle prestazioni, vedere Applicazione di raccomandazioni. Per visualizzare lo stato delle raccomandazioni, vedere Monitoraggio delle operazioni.
È anche possibile trovare la cronologia completa delle azioni di ottimizzazione applicate in precedenza.
Raccomandazioni relative alla creazione di indici
Database SQL di Azure monitora in modo continuo le query in esecuzione e identifica gli indici che potrebbero migliorare le prestazioni. Se la mancanza di un determinato indice è individuata con sufficiente attendibilità, viene creata una nuova raccomandazione Crea indice.
Il database SQL di Azure valuta l'attendibilità stimando il miglioramento delle prestazioni che l'indice potrebbe offrire nel tempo. In base al miglioramento delle prestazioni stimato, le raccomandazioni vengono classificate come alta, media o bassa.
Gli indici creati tramite raccomandazioni sono sempre contrassegnati come indici creati automaticamente. È possibile visualizzare gli indici creati automaticamente esaminando la vista sys.indexes. Gli indici creati automaticamente non bloccano i comandi ALTER/RENAME.
Se si tenta di eliminare la colonna associata a un indice creato automaticamente, il comando passa e l'indice creato automaticamente viene eliminato con il comando. Gli indici normali bloccano il comando ALTER/RENAME sulle colonne indicizzate.
Dopo l'applicazione delle raccomandazioni per l'indice, il database SQL di Azure confronta le prestazioni delle query con quelle di base. Se il nuovo indice migliora le prestazioni, la raccomandazione è contrassegnata come positiva e il report di impatto diventa disponibile. Se l'indice non ha migliorato le prestazioni, viene ripristinato automaticamente. Azure SQL Database usa questo processo per garantire che le raccomandazioni migliorino le prestazioni del database.
Per ogni raccomandazione crea indice, esistono criteri di sicurezza che non consentono di applicare la raccomandazione se l'uso delle risorse di un database o di un pool è elevato. I criteri di sicurezza tengono conto di CPU, I/O dati, I/O log e spazio di archiviazione disponibile.
Se CPU, I/O di dati o I/O del log è superiore all'80% nei 30 minuti precedenti, la raccomandazione di creazione dell'indice viene posticipata. Se lo spazio di archiviazione disponibile sarà inferiore del 10% dopo la creazione dell'indice, la raccomandazione entra in uno stato di errore. Se, dopo un paio di giorni, si ritiene che l'indice sia ancora utile per l'ottimizzazione automatica, il processo inizia nuovamente.
Questo processo viene ripetuto fino a quando non è presente spazio di archiviazione sufficiente per creare un indice o fino a quando l'indice non è più considerato utile.
Raccomandazioni relative all'eliminazione di indici
Oltre a rilevare gli indici mancanti, database SQL di Azure analizza continuamente le prestazioni degli indici esistenti. Se un indice non viene usato, il database SQL di Azure consiglia di eliminarlo. L'eliminazione di un indice è consigliabile in due casi:
- L'indice è un duplicato di un altro indice (ovvero con colonna, schema di partizione e filtri identici)
- L'indice non è stato usato per un periodo prolungato (93 giorni).
Anche le raccomandazioni relative all'eliminazione di indici sono sottoposte a verifica dopo l'implementazione. Se le prestazioni migliorano, il report di impatto diventa disponibile. Se le prestazioni diminuiscono, la raccomandazione viene ripristinata.
Parametrizzare le raccomandazioni per le query (anteprima)
Le raccomandazioni relative alla creazione di query con parametri vengono visualizzate quando sono presenti una o più query che vengono ricompilate costantemente ma finiscono con lo stesso piano di esecuzione di query. Questa determina la possibilità di applicare la parametrizzazione forzata che consente a sua volta di memorizzare nella cache i piani di query e di usarli nuovamente in futuro al fine di migliorare le prestazioni e ridurre l'uso delle risorse.
Ogni query deve essere inizialmente compilata per generare un piano di esecuzione. e ogni piano generato viene aggiunto alla cache dei piani. Nelle esecuzioni successive della stessa query è possibile usare nuovamente tale piano, condizione che elimina la necessità di un'altra compilazione.
Le query con valori senza parametri possono causare un sovraccarico delle prestazioni perché il piano di esecuzione viene ricompilato ogni volta che i valori senza parametri sono diversi. In molti casi, le stesse query con valori di parametro diversi generano gli stessi piani di esecuzione. Questi piani, tuttavia, vengono comunque aggiunti separatamente alla cache dei piani.
Il processo di ricompilazione dei piani di esecuzione usa le risorse del database, aumenta il tempo di durata della query e si verifica un overflow della cache dei piani. Questi eventi, a loro volta, determinano la rimozione dei piani dalla cache. Questo comportamento può essere modificato impostando l'opzione di parametrizzazione forzata nel database.
Per stimare l'impatto della raccomandazione, viene offerto un confronto tra l'uso effettivo e quello previsto della CPU (ovvero nel caso di applicazione della raccomandazione). Tale raccomandazione consente di ottenere risparmi in termini di CPU e di ridurre la durata delle query e l'overhead per la cache dei piani, in modo che più piani possano rimanere nella cache ed essere usati nuovamente. È possibile applicare questa raccomandazione rapidamente selezionando il comando Applica.
Dopo l'applicazione della raccomandazione, in pochi minuti nel database viene applicata la parametrizzazione forzata che avvia il processo di monitoraggio, che dura circa 24 ore. Dopo questo periodo, è possibile visualizzare il report di convalida. Il report mostra l'uso della CPU del database di 24 ore prima e dopo l'applicazione della raccomandazione. Advisor per database SQL di Azure dispone di un meccanismo di sicurezza che ripristina automaticamente la raccomandazione applicata se è stata rilevata la regressione delle prestazioni.
Raccomandazioni relative alla correzione di problemi di schema (anteprima)
Importante
Le raccomandazioni relative alla correzione dei problemi di schema sono attualmente in fase di deprecazione. È consigliabile usare Intelligent Insights per monitorare i problemi di prestazioni del database, inclusi i problemi di schema illustrati in precedenza nelle raccomandazioni relative al problema dello schema.
Le raccomandazioni relative agli schemi vengono visualizzate quando Azure SQL Database rileva un'anomalia nel numero di errori SQL correlati allo schema che si verificano nel database. In genere questa raccomandazione viene visualizzata quando il database rileva più errori correlati allo schema (nome di colonna o di oggetto non valido e così via) nell'arco di un'ora.
"Problemi di schema" sono una classe di errori di sintassi. Tali errori si verificano quando la definizione della query SQL e quella dello schema del database non sono allineate. Una delle colonne previste dalla query, ad esempio, potrebbe essere assente nella tabella di destinazione o viceversa.
La raccomandazione "Correzione del problema dello schema" viene visualizzata quando Azure SQL database rileva un'anomalia nel numero di errori SQL correlati allo schema che si verificano nel database. La tabella seguente illustra gli errori correlati ai problemi di schema:
Codice di errore SQL | Message |
---|---|
201 | La procedura o funzione '' richiede il parametro '', che non è stato specificato. |
207 | Il nome di colonna '*' non è valido. |
208 | Il nome di oggetto '*' non è valido. |
213 | Il nome della colonna o il numero dei valori specificati non corrisponde alla definizione della tabella. |
2812 | Non è stato possibile trovare la stored procedure '*'. |
8144 | Numero eccessivo di argomenti specificati per la procedura o la funzione *. |
Applicazioni personalizzate
Gli sviluppatori potrebbero prendere in considerazione lo sviluppo di applicazioni personalizzate usando raccomandazioni sulle prestazioni per Azure SQL Database. È possibile accedere a tutte le raccomandazioni elencate nel portale per un database tramite l'API Get-AzSqlDatabaseRecommendedAction .
Passaggi successivi
- Per altre informazioni sull'ottimizzazione automatica di indici del database e di piani di esecuzione di query, vedere Ottimizzazione automatica nel database SQL di Azure.
- Per altre informazioni sul monitoraggio automatico delle prestazioni del database con diagnostica automatizzata e analisi della causa radice dei problemi di prestazioni, vedere Intelligent Insights in Azure SQL.
- Per imparare a esaminare l'impatto sulle prestazioni delle query principali, vedere Query Performance Insight del database SQL di Azure.