Suggerimenti sulle prestazioni Advisor per database per il database SQL di AzureDatabase Advisor performance recommendations for Azure SQL Database

SI APPLICA A: Database SQL di Azure

Il database SQL di Azure è in grado di apprendere e di adattarsi all'applicazioneAzure SQL Database learns and adapts with your application. Il database SQL di Azure include numerosi Advisor di database che forniscono consigli personalizzati che consentono di ottimizzare le prestazioni.Azure SQL Database has a number of database advisors that provide customized recommendations that enable you to maximize performance. Questi Advisor di database valutano e analizzano continuamente la cronologia di utilizzo e forniscono consigli basati sui modelli di carico di lavoro che consentono di migliorare le prestazioni.These database advisors continuously assess and analyze the usage history and provide recommendations based on workload patterns that help improve performance.

Panoramica delle prestazioniPerformance overview

Panoramica delle prestazioni fornisce un riepilogo delle prestazioni del database e consente di ottimizzare le prestazioni e la risoluzione dei problemi.Performance overview provides a summary of your database performance, and helps you with performance tuning and troubleshooting.

Panoramica delle prestazioni per il database SQL di Azure

  • 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ù).The Recommendations tile provides a breakdown of tuning recommendations for your database (top three recommendations are shown if there are more). Fare clic su questo riquadro per scegliere le opzioni di raccomandazione per le prestazioni.Clicking this tile takes you to Performance recommendation options.
  • 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.The Tuning activity tile provides a summary of the ongoing and completed tuning actions for your database, giving you a quick view into the history of tuning activity. Se si fa clic su questo riquadro viene visualizzata la cronologia di ottimizzazione completa per il database.Clicking this tile takes you to the full tuning history view for your database.
  • Il riquadro ottimizzazione automatica Mostra la configurazione dell'ottimizzazione automatica per il database (opzioni di ottimizzazione applicate automaticamente al database).The Auto-tuning tile shows the auto-tuning configuration for your database (tuning options that are automatically applied to your database). Se si fa clic su questo riquadro viene visualizzata la finestra di dialogo di configurazione dell'automazione.Clicking this tile opens the automation configuration dialog.
  • 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).The Database queries tile shows the summary of the query performance for your database (overall DTU usage and top resource consuming queries). Se si fa clic su questo riquadro viene visualizzata la pagina Informazioni dettagliate prestazioni query.Clicking this tile takes you to Query Performance Insight.

Opzioni di raccomandazione per le prestazioniPerformance recommendation options

Le opzioni di raccomandazione per le prestazioni disponibili nel database SQL di Azure sono:Performance recommendation options available in Azure SQL Database are:

Raccomandazione per le prestazioniPerformance recommendation Supporto dei database singoli e in poolSingle database and pooled database support Supporto del database dell'istanzaInstance database support
Suggerimenti per la creazione di indici: consiglia di creare indici che possono migliorare le prestazioni del carico di lavoro.Create index recommendations - Recommends creation of indexes that may improve performance of your workload. Yes NoNo
Raccomandazioni per l'eliminazione degli indici: consiglia di rimuovere gli indici ridondanti e duplicati ogni giorno, ad eccezione degli indici univoci e degli indici che non sono stati usati per molto tempo (>90 giorni).Drop index recommendations - Recommends removal of redundant and duplicate indexes daily, except for unique indexes, and indexes that were not used for a long time (>90 days). Si noti che questa opzione non è compatibile con le applicazioni che usano cambi di partizione e hint di indice.Please note that this option is not compatible with applications using partition switching and index hints. L'eliminazione degli indici inutilizzati non è supportata per i livelli di servizio Premium e business critical.Dropping unused indexes is not supported for Premium and Business Critical service tiers. Yes NoNo
Suggerimenti per le query con parametri (anteprima) : la parametrizzazione forzata viene consigliata nei casi in cui una o più query vengono ricompilate costantemente ma finiscono con lo stesso piano di esecuzione della query.Parameterize queries recommendations (preview) - Recommends forced parameterization in cases when you have one or more queries that are constantly being recompiled but end up with the same query execution plan. Yes NoNo
Correzione dei problemi di schema raccomandazioni (anteprima) : le raccomandazioni per la correzione dello schema vengono visualizzate quando il database SQL di Azure rileva un'anomalia nel numero di errori SQL correlati allo schema che si verificano nel database.Fix schema issues recommendations (preview) - Recommendations for schema correction appear when Azure SQL Database notices an anomaly in the number of schema-related SQL errors that are happening on your database. Le raccomandazioni relative alla correzione dei problemi di schema sono attualmente in fase di deprecazione.Microsoft is currently deprecating "Fix schema issue" recommendations. Yes NoNo

Suggerimenti sulle prestazioni per il database SQL di Azure

Per applicare le raccomandazioni sulle prestazioni, vedere applicazione delle raccomandazioni.To apply performance recommendations, see applying recommendations. Per visualizzare lo stato delle raccomandazioni, vedere operazioni di monitoraggio.To view the status of recommendations, see Monitoring operations.

È anche possibile trovare la cronologia completa delle azioni di ottimizzazione applicate in precedenza.You can also find complete history of tuning actions that were applied in the past.

Raccomandazioni relative alla creazione di indiciCreate index recommendations

Il database SQL di Azure monitora continuamente le query in esecuzione e identifica gli indici che potrebbero migliorare le prestazioni.Azure SQL Database continuously monitors the queries that are running and identifies the indexes that could improve performance. Se la mancanza di un determinato indice è individuata con sufficiente attendibilità, viene creata una nuova raccomandazione Crea indice.After there's enough confidence that a certain index is missing, a new Create index recommendation is created.

Il database SQL di Azure valuta l'attendibilità stimando il miglioramento delle prestazioni che l'indice potrebbe offrire nel tempo.Azure SQL Database builds confidence by estimating the performance gain the index would bring through time. In base al miglioramento delle prestazioni stimato, le raccomandazioni vengono classificate come alta, media o bassa.Depending on the estimated performance gain, recommendations are categorized as high, medium, or low.

Gli indici creati tramite raccomandazioni sono sempre contrassegnati come indici creati automaticamente.Indexes that are created by using recommendations are always flagged as auto-created indexes. È possibile visualizzare gli indici creati automaticamente esaminando la vista sys. Indexes.You can see which indexes are auto-created by looking at the sys.indexes view. Gli indici creati automaticamente non bloccano i comandi ALTER/RENAME.Auto-created indexes don't block ALTER/RENAME commands.

Se si tenta di eliminare la colonna associata a un indice creato automaticamente, il comando passaIf you try to drop the column that has an auto-created index over it, the command passes. e l'indice creato automaticamente viene eliminato con il comando.The auto-created index is dropped with the command as well. Gli indici normali bloccano il comando ALTER/RENAME sulle colonne indicizzate.Regular indexes block the ALTER/RENAME command on columns that are indexed.

Dopo l'applicazione delle raccomandazioni per l'indice, il database SQL di Azure confronta le prestazioni delle query con quelle di base.After the create index recommendation is applied, Azure SQL Database compares the performance of the queries with the baseline performance. Se il nuovo indice migliora le prestazioni, la raccomandazione è contrassegnata come positiva e il report di impatto diventa disponibile.If the new index improved performance, the recommendation is flagged as successful and the impact report is available. Se l'indice non migliora le prestazioni, viene ripristinato automaticamente.If the index didn't improve performance, it's automatically reverted. Il database SQL di Azure usa questo processo per garantire che le raccomandazioni migliorino le prestazioni del database.Azure SQL Database uses this process to ensure that recommendations improve database performance.

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.Any create index recommendation has a back-off policy that doesn't allow applying the recommendation if the resource usage of a database or pool is high. I criteri di sicurezza tengono conto di CPU, I/O dati, I/O log e spazio di archiviazione disponibile.The back-off policy takes into account CPU, Data IO, Log IO, and available storage.

Se CPU, i/o dati o i/o log sono superiori al 80% nei 30 minuti precedenti, la raccomandazione Crea indice viene posticipata.If CPU, data IO, or log IO is higher than 80% in the previous 30 minutes, the create index recommendation is postponed. Se lo spazio di archiviazione disponibile sarà inferiore del 10% dopo la creazione dell'indice, la raccomandazione entra in uno stato di errore.If the available storage will be below 10% after the index is created, the recommendation goes into an error state. Se, dopo un paio di giorni, si ritiene che l'indice sia ancora utile per l'ottimizzazione automatica, il processo inizia nuovamente.If, after a couple of days, automatic tuning still believes that the index would be beneficial, the process starts again.

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.This process repeats until there's enough available storage to create an index, or until the index isn't seen as beneficial anymore.

Raccomandazioni relative all'eliminazione di indiciDrop index recommendations

Oltre a rilevare gli indici mancanti, il database SQL di Azure analizza continuamente le prestazioni degli indici esistenti.Besides detecting missing indexes, Azure SQL Database continuously analyzes the performance of existing indexes. Se un indice non viene usato, il database SQL di Azure consiglia di eliminarlo.If an index is not used, Azure SQL Database recommends dropping it. L'eliminazione di un indice è consigliabile in due casi:Dropping an index is recommended in two cases:

  • L'indice è un duplicato di un altro indice (ovvero con colonna, schema di partizione e filtri identici)The index is a duplicate of another index (same indexed and included column, partition schema, and filters).
  • L'indice non è stato usato per un periodo prolungato (93 giorni).The index hasn't been used for a prolonged period (93 days).

Anche le raccomandazioni relative all'eliminazione di indici sono sottoposte a verifica dopo l'implementazione.Drop index recommendations also go through the verification after implementation. Se le prestazioni migliorano, il report di impatto diventa disponibile.If the performance improves, the impact report is available. Se le prestazioni diminuiscono, la raccomandazione viene ripristinata.If performance degrades, the recommendation is reverted.

Suggerimenti per le query con parametri (anteprima)Parameterize queries recommendations (preview)

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.Parameterize queries recommendations appear when you have one or more queries that are constantly being recompiled but end up with the same query execution plan. Questa determina la possibilità di applicare la parametrizzazione forzataThis condition creates an opportunity to apply forced parameterization. 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.Forced parameterization, in turn, allows query plans to be cached and reused in the future, which improves performance and reduces resource usage.

Ogni query deve inizialmente essere compilata per generare un piano di esecuzione.Every query initially needs to be compiled to generate an execution plan. e ogni piano generato viene aggiunto alla cache dei piani.Each generated plan is added to the plan cache. Nelle esecuzioni successive della stessa query è possibile usare nuovamente tale piano, condizione che elimina la necessità di un'altra compilazione.Subsequent executions of the same query can reuse this plan from the cache, which eliminates the need for additional compilation.

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.Queries with non-parameterized values can lead to performance overhead because the execution plan is recompiled each time the non-parameterized values are different. In molti casi, le stesse query con valori di parametro diversi generano gli stessi piani di esecuzione.In many cases, the same queries with different parameter values generate the same execution plans. Questi piani, tuttavia, vengono comunque aggiunti separatamente alla cache dei piani.These plans, however, are still separately added to the plan cache.

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.The process of recompiling execution plans uses database resources, increases the query duration time, and overflows the plan cache. Questi eventi, a loro volta, determinano la rimozione dei piani dalla cache.These events, in turn, cause plans to be evicted from the cache. Questo comportamento può essere modificato impostando l'opzione di parametrizzazione forzata nel database.This behavior can be altered by setting the forced parameterization option on the 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).To help you estimate the impact of this recommendation, you are provided with a comparison between the actual CPU usage and the projected CPU usage (as if the recommendation were applied). Tale raccomandazione consente di ottenere risparmi in termini di CPUThis recommendation can help you gain CPU savings. 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.It can also help you decrease query duration and overhead for the plan cache, which means that more of the plans can stay in the cache and be reused. È possibile applicare questa raccomandazione rapidamente selezionando il comando Applica.You can apply this recommendation quickly by selecting the Apply command.

Dopo l'applicazione della raccomandazione, in pochi minuti nel database viene applicata la parametrizzazione forzataAfter you apply this recommendation, it enables forced parameterization within minutes on your database. che avvia il processo di monitoraggio, che dura circa 24 ore.It starts the monitoring process, which lasts for approximately 24 hours. Dopo questo periodo, è possibile visualizzare il report di convalida.After this period, you can see the validation report. Il report mostra l'uso della CPU del database di 24 ore prima e dopo l'applicazione della raccomandazione.This report shows the CPU usage of your database 24 hours before and after the recommendation has been applied. Advisor per database SQL di Azure dispone di un meccanismo di sicurezza che ripristina automaticamente la raccomandazione applicata se è stata rilevata una regressione delle prestazioni.Azure SQL Database Advisor has a safety mechanism that automatically reverts the applied recommendation if performance regression has been detected.

Raccomandazioni relative alla correzione di problemi di schema (anteprima)Fix schema issues recommendations (preview)

Importante

Le raccomandazioni relative alla correzione dei problemi di schema sono attualmente in fase di deprecazione.Microsoft is currently deprecating "Fix schema issue" recommendations. È consigliabile usare Intelligent Insights per monitorare i problemi di prestazioni del database, ad esempio i problemi di schema interessati in precedenza dalle raccomandazioni di correzione indicate.We recommend that you use Intelligent Insights to monitor your database performance issues, including schema issues that the "Fix schema issue" recommendations previously covered.

La correzione dei problemi relativi allo schema viene visualizzata quando il database SQL di Azure rileva un'anomalia nel numero di errori SQL correlati allo schema che si verificano nel database.Fix schema issues recommendations appear when Azure SQL Database notices an anomaly in the number of schema-related SQL errors that are happening on your 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.This recommendation typically appears when your database encounters multiple schema-related errors (invalid column name, invalid object name, and so on) within an hour.

"Problemi di schema" rappresentano una classe di errori di sintassi."Schema issues" are a class of syntax errors. Tali errori si verificano quando la definizione della query SQL e quella dello schema del database non sono allineate.They occur when the definition of the SQL query and the definition of the database schema aren't aligned. Una delle colonne previste dalla query, ad esempio, potrebbe essere assente nella tabella di destinazione o viceversa.For example, one of the columns that's expected by the query might be missing in the target table or vice-versa.

Quando il database SQL di Azure rileva un'anomalia nel numero di errori SQL correlati allo schema che si verificano nel database, viene visualizzata la raccomandazione "Correggi problema schema".The "Fix schema issue" recommendation appears when Azure SQL Database notices an anomaly in the number of schema-related SQL errors that are happening on your database. La tabella seguente illustra gli errori correlati ai problemi di schema:The following table shows the errors that are related to schema issues:

Codice di errore SQLSQL error code MessageMessage
201201 La procedura o funzione '' richiede il parametro '', che non è stato specificato.Procedure or function '' expects parameter '', which was not supplied.
207207 Il nome di colonna '*' non è valido.Invalid column name '*'.
208208 Il nome di oggetto '*' non è valido.Invalid object name '*'.
213213 Il nome della colonna o il numero dei valori specificati non corrisponde alla definizione della tabella.Column name or number of supplied values does not match table definition.
28122812 Non è stato possibile trovare la stored procedure '*'.Could not find stored procedure '*'.
81448144 Numero eccessivo di argomenti specificati per la procedura o la funzione *.Procedure or function * has too many arguments specified.

Applicazioni personalizzateCustom applications

Gli sviluppatori potrebbero prendere in considerazione lo sviluppo di applicazioni personalizzate usando consigli sulle prestazioni per il database SQL di Azure.Developers might consider developing custom applications using performance recommendations for Azure SQL Database. È possibile accedere a tutte le raccomandazioni elencate nel portale per un database tramite l'API Get-AzSqlDatabaseRecommendedAction .All recommendations listed in the portal for a database can be accessed through Get-AzSqlDatabaseRecommendedAction API.

Passaggi successiviNext steps