Condividi tramite


Raccolta dati di previsione: Procedure consigliate per le prestazioni per SQL Server nelle macchine virtuali di Azure

Si applica a:SQL Server su VM di Azure

Questo articolo fornisce informazioni per raccogliere una previsione delle prestazioni sotto forma di una serie di procedure consigliate e linee guida per ottimizzare le prestazioni di SQL Server in Macchine Virtuali (VM) di Azure.

In genere, esiste un compromesso tra l'ottimizzazione dei costi e l'ottimizzazione delle prestazioni. Questa serie di migliori pratiche per le prestazioni è incentrata sull'ottenere le migliori prestazioni per SQL Server su macchine virtuali Azure. Se il carico di lavoro è contenuto, potrebbero non essere necessarie tutte le ottimizzazioni elencate di seguito. Prendere in considerazione le esigenze in termini di prestazioni, i costi e i modelli di carico di lavoro durante la valutazione di queste indicazioni.

Panoramica

Per un approccio prescrittivo, raccogliere i contatori delle prestazioni usando PerfMon o LogMan e acquisire le statistiche di attesa di SQL Server per comprendere meglio le pressioni generali e i potenziali colli di bottiglia dell'ambiente di origine.

Per iniziare, raccogliere CPU, memoria, operazioni di I/O al secondo, velocità effettiva e latenza del carico di lavoro di origine nei momenti di picco dopo l'elenco di controllo delle prestazioni dell'applicazione.

Raccogliere dati durante le ore di punta, ad esempio i carichi di lavoro durante il giorno lavorativo tipico, ma anche altri processi di carico elevato, ad esempio l'elaborazione end-of-day e i carichi di lavoro ETL del fine settimana. Valutare la possibilità di aumentare le risorse per carichi di lavoro atipicamente pesanti, ad esempio l'elaborazione di fine trimestre, e quindi ridurre le risorse al termine del carico di lavoro.

Usare l'analisi delle prestazioni per selezionare le dimensioni della macchina virtuale che possono essere ridimensionate in base ai requisiti di prestazioni del carico di lavoro.

Archiviazione

Le prestazioni di SQL Server dipendono principalmente dal sottosistema di I/O. Misurare le prestazioni di archiviazione in base alle operazioni di I/O al secondo e alla velocità effettiva. A meno che il database non si adatti alla memoria fisica, SQL Server porta costantemente le pagine del database all'interno e all'esterno del pool di buffer. Gestire i file di dati per SQL Server in modo diverso. L'accesso ai file di log è sequenziale tranne quando è necessario eseguire il rollback di una transazione in cui i file di dati, incluso tempdb, sono accessibili in modo casuale. Se si dispone di un sottosistema di I/O lento, gli utenti potrebbero riscontrare problemi di prestazioni, ad esempio tempi di risposta lenti e attività che non vengono completate a causa di timeout.

Le macchine virtuali di Azure Marketplace dispongono di file di log in un disco fisico separato dai file di dati per impostazione predefinita. Il numero e le dimensioni dei file di dati tempdb soddisfano le procedure consigliate e sono destinati all'unità temporanea D:\.

I contatori PerfMon seguenti consentono di convalidare la velocità effettiva di I/O richiesta da SQL Server:

  • \LogicalDisk\Disk Reads/Sec (lettura IOPS)
  • \LogicalDisk\Disk Writes/Sec (la scrittura IOPS)
  • \LogicalDisk\Disk Read Bytes/Sec (requisiti di velocità effettiva di lettura per i dati, i log e i file tempdb)
  • \LogicalDisk\Disk Write Bytes/Sec (requisiti di velocità effettiva di lettura per i dati, i log e i file tempdb)

Utilizzando i requisiti di IOPS e throughput ai livelli di picco, valutare le dimensioni delle macchine virtuali che corrispondono alla capacità misurata.

Se il carico di lavoro richiede 20.000 operazioni di I/O al secondo di lettura e 10.000 operazioni di I/O al secondo di scrittura, è possibile scegliere E16s_v3 (con un massimo di 32.000 operazioni di I/O al secondo memorizzate nella cache e 25.600 operazioni di I/O al secondo non memorizzate nella cache) o M16_s (con un massimo di 20.000 operazioni di I/O al secondo memorizzate nella cache e 10.000 operazioni di I/O al secondo non memorizzate nella cache) utilizzando due dischi P30 raggruppati tramite Storage Spaces.

Assicurarsi di comprendere i requisiti di velocità effettiva e operazioni di I/O al secondo del carico di lavoro perché le macchine virtuali hanno limiti di scalabilità diversi per operazioni di I/O al secondo e velocità effettiva.

Memoria

Tenere traccia della memoria esterna usata dal sistema operativo e della memoria usata internamente da SQL Server. L'identificazione della pressione per entrambi i componenti consente di ridimensionare le macchine virtuali e identificare le opportunità di ottimizzazione.

I contatori PerfMon seguenti consentono di convalidare l'integrità della memoria di una macchina virtuale di SQL Server:

Calcolo

Il calcolo in Azure viene gestito in modo diverso rispetto agli ambienti locali. I server locali sono progettati per durare diversi anni senza un aggiornamento a causa del sovraccarico di gestione e dei costi di acquisizione di nuovo hardware. La virtualizzazione riduce alcuni di questi problemi, ma le applicazioni sono ottimizzate per sfruttare appieno l'hardware sottostante. Qualsiasi modifica significativa all'utilizzo delle risorse richiede il ribilanciamento dell'intero ambiente fisico.

Questo problema non esiste in Azure. È possibile creare facilmente una nuova macchina virtuale in una serie diversa di hardware o anche in un'area diversa.

In Azure si vuole sfruttare il maggior numero possibile di risorse della macchina virtuale. Configurare le macchine virtuali di Azure per mantenere la CPU media il più elevata possibile senza influire sul carico di lavoro.

I contatori PerfMon seguenti consentono di convalidare l'integrità di calcolo di una macchina virtuale di SQL Server:

  • Informazioni processore(_Totale)% Tempo del processore
  • \Process(sqlservr)% Tempo del processore

Nota

L'obiettivo è usare 80% del calcolo, con picchi superiori a 90%, ma non raggiungere 100% per un periodo di tempo prolungato. Fondamentalmente, eseguire il provisioning solo delle risorse di calcolo necessarie all'applicazione. Pianificare l'aumento o la riduzione delle prestazioni in base alle esigenze aziendali.

Per indicazioni dettagliate su ogni area di ottimizzazione:

Esaminare altri articoli relativi alle macchine virtuali di SQL Server in Panoramica di SQL Server in Macchine virtuali di Azure. In caso di domande sulle macchine virtuali SQL Server, consultare le domande frequenti.