Condividi tramite


Ottimizzazione automatica delle prestazioni del database SQL di Azure e di Istanza gestita di SQL di Azure

Si applica a: Database SQL di Azure Istanza gestita di SQL di Azure

L'ottimizzazione automatica del database SQL di Azure e di Istanza gestita di SQL di Azure garantisce massime prestazioni e carichi di lavoro stabili grazie al miglioramento continuo delle prestazioni basato sull'intelligenza artificiale e sull'apprendimento automatico.

L'ottimizzazione automatica è un servizio per prestazioni intelligenti completamente gestito che usa l'intelligenza artificiale incorporata per monitorare costantemente le query eseguite su un database e ne migliora le prestazioni in automatico. Questo risultato viene raggiunto adattando in modo dinamico un database ai carichi di lavoro modificabili e applicando le raccomandazioni di ottimizzazione. L'ottimizzazione automatica apprende orizzontalmente da tutti i database in Azure grazie all'intelligenza artificiale e migliora in modo dinamico le azioni di ottimizzazione. Quanto più a lungo un database viene eseguito con l'ottimizzazione automatica attivata, tanto migliori sono le prestazioni.

L'ottimizzazione automatica del database SQL di Azure e di Istanza gestita di SQL di Azure potrebbe essere una delle funzionalità più importanti che è possibile abilitare per garantire carichi di lavoro del database con prestazioni ottimali e stabili.

L'ottimizzazione automatica di Azure SQL condivide la logica principale con la funzionalità di ottimizzazione automatica nel motore di database. Per altre informazioni tecniche sul meccanismo di intelligenza artificiale incorporata, vedere SQL Server automatic tuning (Ottimizzazione automatica di SQL Server).

I vantaggi dell'ottimizzazione automatica

  • Ottimizzazione automatizzata delle prestazioni per i database
  • Verifica automatizzata dei miglioramenti delle prestazioni
  • Ripristino dello stato precedente automatizzato e correzione automatica
  • Cronologia ottimizzazione
  • Ottimizzazione degli script di azione Transact-SQL (T-SQL) per le distribuzioni manuali
  • Capacità di aumentare il numero di istanze in centinaia di migliaia di database
  • Impatto positivo sulle risorse DevOps e sul costo totale di proprietà

Sicura, affidabile e collaudata

Le operazioni di ottimizzazione applicate ai database sono assolutamente sicure per le prestazioni dei carichi di lavoro più elevati. Il sistema è stato progettato in modo che non interferisca con i carichi di lavoro dell'utente. I consigli di ottimizzazione automatizzata vengono applicati solo in caso di basso utilizzo di CPU, I/O di dati e I/O di log. Il sistema può anche disabilitare temporaneamente le operazioni di ottimizzazione automatica per proteggere le prestazioni dei carichi di lavoro. In questo caso, il messaggio "Disabilitato dal sistema" verrà visualizzato nel portale di Azure e nella DMV sys.database_automatic_tuning_options. L'ottimizzazione automatica è progettata per assegnare ai carichi di lavoro degli utenti la massima priorità fra le risorse.

I meccanismi di ottimizzazione automatica sono ormai avanzati e sono stati perfezionati in diversi milioni di database in esecuzione su Azure. Le operazioni di ottimizzazione automatizzata applicate vengono verificate automaticamente per assicurare che sussista un miglioramento notevole delle prestazioni dei carichi di lavoro. Se non vi sono miglioramenti o nel caso improbabile in cui vi siano regressioni nelle prestazioni, le modifiche apportate dall'ottimizzazione automatica vengono ripristinate tempestivamente. La cronologia di ottimizzazione registrata offre una chiara analisi dei miglioramenti apportati a ogni database in Database SQL di Azure.

Come funziona l'ottimizzazione automatica

Abilitare l'ottimizzazione automatica

Opzioni di ottimizzazione automatica

Le opzioni di ottimizzazione automatica disponibili in Database SQL di Azure e Istanza gestita di SQL di Azure sono:

Opzione di ottimizzazione automatica Descrizione Supporto dei database singoli e in pool Supporto dei database dell'istanza
CREATE INDEX Identifica quali sono gli indici in grado di migliorare le prestazioni del carico di lavoro, li crea e verifica automaticamente il miglioramento delle prestazioni delle query. Quando viene consigliato un nuovo indice, il sistema considera lo spazio disponibile nel database. Se si stima che l'aggiunta dell'indice aumenti l'utilizzo dello spazio al di sopra del 90% rispetto alle dimensioni massime dei dati, il consiglio sull'indicizzazione non viene generato. Quando il sistema identifica un periodo di basso utilizzo e inizia a creare un indice, non sospende o annulla questa operazione anche se l'utilizzo delle risorse aumenta in maniera imprevista. Se la creazione dell'indice non va a buon fine, verrà ritentata durante un periodo futuro di basso utilizzo. I consigli sugli indici non vengono forniti per le tabelle in cui l'indice cluster o l'heap è maggiore di 10 GB. No
DROP INDEX Elimina gli indici inutilizzati (negli ultimi 90 giorni) e duplicati. Gli indici univoci, compresi gli indici che supportano la chiave primaria e i vincoli di unicità, non vengono mai eliminati. Questa opzione può essere disabilitata automaticamente quando nel carico di lavoro sono presenti query con hint per l'indice o quando il carico di lavoro esegue il cambio di partizione. Nei livelli di servizio Premium e Business Critical, questa opzione non elimina mai gli indici inutilizzati, ma elimina gli indici duplicati, se presenti. No
FORCE LAST GOOD PLAN (correzione automatica del piano) Identifica le query SQL Azure che usano un piano di esecuzione più lento rispetto a un piano valido precedente e forza le query all'uso dell'ultimo piano valido noto anziché del piano con regressione.

Ottimizzazione automatica per il database SQL

L'ottimizzazione automatica per database SQL di Azure usa i consigli di Advisor per database CREATE INDEX, DROP INDEX e FORCE_LAST_GOOD_PLAN per ottimizzare le prestazioni del database. Per altre informazioni, vedere Consigli di Advisor per database nella portale di Azure, in PowerShell e nell'API REST.

È possibile applicare manualmente le raccomandazioni di ottimizzazione tramite il portale Azure, oppure consentirne l'applicazione autonoma da parte dell'ottimizzazione automatica. I vantaggi di consentire al sistema di applicare in modo autonomo i consigli di ottimizzazione consistono nella convalida automatica della presenza di un aumento delle prestazioni del carico di lavoro e, se non vengono rilevati miglioramenti significativi delle prestazioni o se queste regrediscono, il sistema ripristina automaticamente le modifiche apportate. A seconda della frequenza di esecuzione delle query, il processo di convalida può richiedere da 30 minuti a 72 ore e richiede più tempo per le query eseguite con minore frequenza. Se, in qualsiasi momento, durante la convalida viene rilevata una regressione, le modifiche vengono ripristinate immediatamente.

Importante

Nel caso in cui si applichino i consigli di ottimizzazione tramite T-SQL, la convalida automatica delle prestazioni e i meccanismi di ripristino non sono disponibili. I consigli applicati in questo modo rimarranno attivi e visualizzati nell'elenco dei consigli di ottimizzazione per 24-48 ore prima che il sistema li ritiri automaticamente. Se si vuole rimuovere un consiglio prima di questo intervallo di tempo, è possibile eliminarlo dal portale di Azure.

Le opzioni di ottimizzazione automatica possono essere abilitate o disabilitate in modo indipendente per ogni database, oppure possono essere configurate a livello server e applicate a ogni database che eredita le impostazioni dal server. Per impostazione predefinita, i nuovi server ereditano le impostazioni predefinite di Azure per le impostazioni di ottimizzazione automatica. Le impostazioni predefinite di Azure sono impostate su FORCE_LAST_GOOD_PLAN (abilitata), CREATE_INDEX (disabilitata) e DROP_INDEX (disabilitata).

Il metodo consigliato per la configurazione dell'ottimizzazione automatica è quello che prevede la configurazione delle opzioni di ottimizzazione automatica in un server e l'eredità delle impostazioni per i database appartenenti al server padre. Ciò semplifica la gestione delle opzioni di ottimizzazione automatica per un numero elevato di database.

Per altre informazioni sulla generazione di notifiche tramite posta elettronica per i consigli di ottimizzazione automatica, vedere Notifiche tramite posta elettronica per l'ottimizzazione automatica.

Ottimizzazione automatica per Istanza gestita di SQL di Azure

L'ottimizzazione automatica per Istanza gestita di SQL di Azure supporta solo FORCE LAST GOOD PLAN. Per altre informazioni sulla configurazione delle opzioni di ottimizzazione automatica tramite T-SQL, vedere L'ottimizzazione automatica introduce la correzione automatica del piano e Correzione automatica del piano.

Esempi di abilitazione

Per altre informazioni, vedere le opzioni ALTER DATABASE SET.

Per ereditare la configurazione predefinita dal server logico padre, usare il T-SQL seguente. Nel portale di Azure questa opzione riflette l'opzione "Eredita da: Server".

ALTER DATABASE CURRENT SET AUTOMATIC_TUNING = INHERIT;

Per abilitare le opzioni di ottimizzazione automatica CREATE INDEX e DROP INDEX, usare il T-SQL seguente.

ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (CREATE_INDEX = ON, DROP_INDEX = ON);

Cronologia dell'ottimizzazione automatica

Per Database SQL di Azure, la cronologia delle modifiche apportate dall'ottimizzazione automatica viene mantenuta per 21 giorni. Può essere visualizzata nel portale di Azure alla pagina Consigli sulle prestazioni per un database, o tramite PowerShell con il cmdlet Get-AzSqlDatabaseRecommendedAction. Per una conservazione più lunga, i dati della cronologia possono anche essere trasmessi a diversi tipi di destinazioni abilitando l'impostazione di diagnostica AutomaticTuning.