Raccomandazioni per le prestazioni per il database SQLPerformance recommendations for SQL Database

Il database SQL di Azure è in grado di apprendere e di adattarsi all'applicazioneAzure SQL Database learns and adapts with your application. e fornisce raccomandazioni personalizzate che consentono di ottimizzare le prestazioni dei database SQL.It provides customized recommendations that enable you to maximize the performance of your SQL databases. Il database SQL valuta e analizza in modo continuo la cronologia di uso dei database SQL.SQL Database continuously assesses and analyzes the usage history of your SQL databases. Le raccomandazioni fornite si basano su modelli di carico di lavoro specifici del database e consentono di migliorarne le prestazioni.The recommendations that are provided are based on database-unique workload patterns and help improve performance.

Suggerimento

L'ottimizzazione automatica è il metodo consigliato per ottimizzare le prestazioni,Automatic tuning is the recommended method for performance tuning. mentre Intelligent Insights è il metodo consigliato per monitorarle.Intelligent Insights is the recommended method for monitoring performance.

Raccomandazioni relative alla creazione di indiciCreate index recommendations

Il database SQL monitora in modo continuo le query in esecuzione e identifica gli indici che potrebbero migliorare le prestazioni.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. Per individuare gli indici creati automaticamente, esaminare 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 automaticamente ripristinato.If the index didn’t improve performance, it's automatically reverted. Il database SQL Usa questo processo per garantire che le raccomandazioni migliorino le prestazioni del database.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 il valore di CPU, I/O dati oppure I/O log è più alto dell'80% nei 30 minuti precedenti, la raccomandazione di creazione indici è 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 indici mancanti, il database SQL analizza continuamente le prestazioni degli indici esistenti.Besides detecting missing indexes, 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.

Raccomandazioni relative alla creazione di query con parametriParameterize queries recommendations

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 eseguita inizialmente su SQL Server deve essere compilata per generare un piano di esecuzioneEvery query that's issued against SQL Server 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 provocare un overhead 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 esecuzioneIn many cases, the same queries with different parameter values generate the same execution plans. che tuttavia vengono aggiunti ancora 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 risorse del database, aumenta il tempo di durata delle query e provoca 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, provocano la rimozione dei piani dalla cache.These events, in turn, cause plans to be evicted from the cache. Questo comportamento di SQL Server può essere modificato impostando l'opzione di parametrizzazione forzata nel database.This SQL Server 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 include un meccanismo di sicurezza che ripristina automaticamente la raccomandazione applicata nel caso in cui venga rilevata una regressione delle prestazioni.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.

Le raccomandazioni correzioni di problema di schema vengono visualizzate quando il servizio di database SQL rileva un'anomalia nel numero di errori SQL correlati allo schema nel database SQL.Fix schema issues recommendations appear when the SQL Database service notices an anomaly in the number of schema-related SQL errors that are happening on your SQL 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.

Con "Problemi dello schema" si indica una classe di errori di sintassi in SQL Server.“Schema issues” are a class of syntax errors in SQL Server. 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.

Le raccomandazioni relative alla "correzione di problemi di schema" vengono visualizzate quando il servizio di database SQL di Azure rileva un'anomalia nel numero di errori SQL correlati al database SQL.The “Fix schema issue” recommendation appears when the Azure SQL Database service notices an anomaly in the number of schema-related SQL errors that are happening on your SQL 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.

Passaggi successiviNext steps

Monitorare le raccomandazioni e continuare ad applicarle in modo da migliorare le prestazioni.Monitor your recommendations and continue to apply them to refine performance. I carichi di lavoro dei database sono dinamici e cambiano in modo continuo.Database workloads are dynamic and change continuously. Advisor per database SQL continua a monitorare e a offrire raccomandazioni potenzialmente utili per migliorare le prestazioni del database.SQL Database Advisor continues to monitor and provide recommendations that can potentially improve your database's performance.