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.
Vi è in genere un compromesso tra l'ottimizzazione per i costi e l'ottimizzazione per le prestazioni. Questa serie di procedure consigliate per le prestazioni, è incentrata sull'ottenimento delle migliori prestazioni per SQL Server in macchine virtuali di 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 contatori delle prestazioni usando PerfMon/LogMan e acquisire 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. Prendere in considerazione l'aumento delle risorse per carichi di lavoro atipici, ad esempio l'elaborazione end-of-quarter e quindi la scalabilità eseguita 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.
Storage
Le prestazioni di SQL Server dipendono principalmente dal sottosistema di I/O e dalle prestazioni di archiviazione misurate in base alle operazioni di I/O al secondo e alla produttività. 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. I file di dati per SQL Server devono essere trattati 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 (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
)
Usando i requisiti di I/O al secondo e velocità effettiva a livelli di picco, valutare le dimensioni delle macchine virtuali che corrispondono alla capacità delle misurazioni.
Se ad esempio il carico di lavoro richiede 20 K di operazioni di I/O al secondo in lettura e 10 K di operazioni di I/O al secondo in scrittura nelle ore di utilizzo massimo, è possibile scegliere E16s_v3 (con un massimo di 32 K memorizzati nella cache e 25600 operazioni di I/O al secondo non memorizzate nella cache) o M16_s (con un massimo di 20 K memorizzati nella cache e 10 K di operazioni di I/O al secondo non memorizzate nella cache) con 2 dischi P30.
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:
- \Memoria\MByte disponibili
- SQL Server: Gestione memoria: Memoria server di destinazione (KB)
- SQL Server: Gestione memoria: Memoria server totale (KB)
- SQL Server: Gestione buffer: scritture Lazywrite/sec
- SSQL Server: Gestione buffer: permanenza presunta delle pagine
Calcolo
Il calcolo in Azure viene gestito in modo diverso rispetto all'ambiente locale. I server locali vengono compilati per durare diversi anni senza un aggiornamento a causa del sovraccarico di gestione e del costo di acquisizione di nuovo hardware. La virtualizzazione riduce alcuni di questi problemi, ma le applicazioni sono ottimizzate per sfruttare al meglio l'hardware sottostante, il che significa che qualsiasi modifica significativa all'utilizzo delle risorse richiede ribilanciamento dell'intero ambiente fisico.
Questa non è una sfida in Azure in cui una nuova macchina virtuale in una serie diversa di hardware, e anche in un'area diversa, è facile da ottenere.
In Azure si vuole sfruttare il maggior numero possibile di risorse di macchine virtuali, pertanto le macchine virtuali di Azure devono essere configurate 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 sul processore (_totale)% Tempo processore
- \Process(sqlservr)% Tempo processore
Nota
Idealmente, provare a usare l'80% del calcolo, con picchi superiori al 90% ma non raggiungere il 100% per qualsiasi periodo di tempo sostenuto. Fondamentalmente, si vuole solo effettuare il provisioning delle esigenze di calcolo dell'applicazione e quindi pianificare l'aumento o la riduzione delle prestazioni in base alle esigenze aziendali.
Passaggi successivi
Per altre informazioni, vedere gli altri articoli di questa serie di procedure consigliate:
Per le procedure consigliate relative alla sicurezza, vedere Considerazioni relative alla sicurezza per SQL Server in Macchine virtuali di Azure.
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.