Microsoft sta semplificando sempre più l'esecuzione di SQL Server 2014 su una macchina virtuale Azure in uno dei diciassette data center Azure di Microsoft. È possibile eseguire una macchina virtuale preconfigurata con un'istanza di SQL Server 2014 preconfigurata dalla raccolta di Azure a scelta di una macchina virtuale di Azure di qualsiasi dimensione. Una delle scelte dalla raccolta è "SQL Server 2014 Enterprise Optimized for Transactional Workloads" in esecuzione su Windows Server 2012 R2. Un aspetto positivo dell'utilizzo di un'immagine della raccolta preconfigurata è che non è necessario pagare alcuna licenza di SQL Server 2014. Paghi semplicemente il costo orario per l'edizione di SQL Server e le dimensioni della macchina virtuale che scegli.
Opzioni di configurazione di SQL Server 2014
Microsoft spiega che "Questa immagine Enterprise Edition è ottimizzata per carichi di lavoro OLTP ed è destinata a VM di dimensioni comprese A4, A7, A8 e A9. Una volta distribuita, la VM viene fornita con Spazi di archiviazione Windows preconfigurati". Microsoft esegue anche alcuni lavori di configurazione a livello di istanza su SQL Server 2014, sebbene non vadano abbastanza lontano con quelle che considero procedure consigliate standard.
Creano otto file di dati tempdb che hanno tutte una dimensione di 25600 MB, con un incremento automatico di 1024 MB, che è una buona scelta predefinita. Inoltre, abilitano TF1117 e TF1118 come flag di traccia di avvio, che sono anche buone scelte per SQL Server. Infine, Microsoft consente anche l'inizializzazione istantanea dei file e il blocco delle pagine in memoria nel sistema operativo, cosa con cui sono anche d'accordo.
Preferirei che Microsoft apportasse anche alcune modifiche a queste opzioni di configurazione a livello di istanza:
- compressione di backup predefinita
- soglia di costo per il parallelismo
- grado massimo di parallelismo
- Memoria massima del server (MB)
- ottimizza per carichi di lavoro ad hoc
La compressione del backup dovrebbe essere abilitata per impostazione predefinita nella maggior parte dei casi. La soglia di costo per il parallelismo spesso dovrebbe essere aumentata a un valore superiore al valore predefinito di 5, a seconda del carico di lavoro. Il grado massimo di parallelismo di solito deve essere modificato in un valore non predefinito basato sul numero di core in un nodo NUMA. Questa impostazione dipende anche dal carico di lavoro. La memoria massima del server deve essere impostata su un valore non predefinito in base alla quantità di RAM nella macchina virtuale e all'esecuzione (oltre al motore di database di SQL Server) nella macchina virtuale. Infine, penso che l'ottimizzazione per carichi di lavoro ad hoc dovrebbe essere abilitata, praticamente in tutti i casi.
A difesa di Microsoft, sarebbe difficile fare una scelta di configurazione soddisfacente per alcuni di questi elementi senza conoscere (in anticipo) i dettagli della dimensione della VM e del carico di lavoro previsto del server di database. Ciò lascia l'attività a te, proprio come con un'istanza di SQL Server locale.
Ridimensionamento della macchina virtuale di Azure
Anche se è possibile scegliere qualsiasi cosa da una macchina A0 Basic a una macchina A9 Standard, Microsoft consiglia di scegliere una macchina virtuale di dimensioni A4 Standard, A7 Standard, A8 Standard o A9 Standard per l'utilizzo di produzione. I dettagli sui prezzi per le macchine virtuali di SQL Server sono elencati qui.
Osservando le specifiche comparative per questi consigli nella Tabella 1, è difficile capire perché si dovrebbe scegliere una macchina A4 Standard, dal momento che costa la stessa quantità all'ora delle più grandi macchine A7 o A8 Standard. Guardando la documentazione online, inizialmente non è molto chiaro quale sia la differenza effettiva tra una macchina A7 e una A8 Standard. Scavando un po' più a fondo, la macchina A8 Standard è considerata un'istanza Compute Intensive, che dovrebbe utilizzare un processore Intel Xeon E5-2670 da 2,6 GHz più veloce, insieme a due schede di rete (una da 10 Gbps e una da 32 Gbps in grado di supportare RDMA).
La macchina virtuale A7 Standard utilizza un processore Intel Xeon E5-2660 da 2,2 GHz leggermente più lento, mentre la connettività di rete sembra essere Ethernet standard da 1 Gbps. Sebbene sembri una differenza significativa nelle prestazioni del processore e della rete, non è in realtà il problema principale con le macchine virtuali della serie A per l'utilizzo di SQL Server.
Dimensioni VM | Tariffa standard SQL | Tariffa SQL Enterprise | Conteggio core | Quantità di RAM |
---|---|---|---|---|
A4 Standard | $ 0,80/ora | $ 3,00/ora | 8 | 14 GB |
A7 Standard | $ 0,80/ora | $ 3,00/ora | 8 | 56 GB |
A8 Standard | $ 0,80/ora | $ 3,00/ora | 8 | 56 GB |
A9 Standard | $ 1,60/ora | $ 6,00/ora | 16 | 112 GB |
Tabella 1:informazioni sulla macchina virtuale SQL Server serie A
Il problema principale con tutte le macchine virtuali della serie A sono le prestazioni piuttosto miserabili del sottosistema di I/O, anche se Microsoft ha preconfigurato il sottosistema del disco con gli spazi di archiviazione di Windows per ottenere le migliori prestazioni possibili date le limitazioni alle prestazioni intrinseche dell'A- macchine virtuali di serie e host. La figura 1 mostra i risultati CrystalDiskMark per l'unità E:da un computer A4 Standard dal data center Azure degli Stati Uniti orientali, destinato ai file di registro delle transazioni.
Figura 1:Risultati CrystalDiskMark standard A4
Un'alternativa molto migliore per SQL Server sono le macchine virtuali della serie D. Queste macchine virtuali costano lo stesso all'ora delle macchine virtuali della serie A di dimensioni comparabili e dispongono di spazio di archiviazione SSD locale che deve essere utilizzato solo per tempdb e/o per file BPE (Buffer Pool Extensions), poiché non sono persistenti. Alcune specifiche rilevanti per le macchine virtuali della serie D sono mostrate nella Tabella 2.
Dimensioni VM | Tariffa standard SQL | Tariffa SQL Enterprise | Conteggio core | Quantità di RAM |
---|---|---|---|---|
D4 Standard | $ 0,80/ora | $ 3,00/ora | 8 | 28 GB |
D13 Standard | $ 0,80/ora | $ 3,00/ora | 8 | 56 GB |
D14 Standard | $ 1,60/ora | $ 6,00/ora | 16 | 112 GB |
Tabella 2:informazioni sulla macchina virtuale SQL Server serie D
La macchina D4 Standard costa come una macchina A4 Standard, ma ha il doppio della RAM e un po' di memoria SSD locale. La macchina D13 Standard costa come una macchina A7 o A8 Standard, ma con il vantaggio dell'archiviazione SDD locale. La macchina D14 Standard costa come una macchina A9 Standard, ma ha anche il vantaggio dell'archiviazione SSD locale. Date queste informazioni, non ha molto senso usare una macchina virtuale serie A per SQL Server.
Sfortunatamente, anche le unità permanenti per i dati e i file di registro di SQL Server hanno prestazioni I/O piuttosto scadenti in CrystalDiskMark, come mostrato nelle Figure 2 e 3.
Figura 2:Risultati CrystalDiskMark standard D14 | Figura 3:Risultati CrystalDiskMark standard D14 |
Le prestazioni dell'SSD locale sono correlate alle dimensioni della macchina virtuale di Azure, con dimensioni maggiori che ottengono migliori prestazioni dell'SSD locale. I risultati delle prestazioni CrystalDiskMark per una macchina D14 Standard nel data center Azure degli Stati Uniti orientali sono mostrati nella Figura 4.
Figura 4:Risultati CrystalDiskMark standard D14 per l'archiviazione SSD locale
L'unità F:(per i file di dati di SQL Server) ha risultati leggermente migliori rispetto all'unità E:, ma entrambe le unità hanno un livello di prestazioni molto basso per SQL Server.
Conclusione
Sembra abbastanza chiaro che le macchine della serie D siano migliori per l'utilizzo di SQL Server rispetto alle macchine della serie A. È inoltre opportuno prestare molta attenzione al dimensionamento e ai prezzi della macchina virtuale di cui si decide di eseguire il provisioning per SQL Server, poiché è possibile ottenere più RAM allo stesso costo orario. Le due scelte migliori dal punto di vista delle prestazioni sono le macchine virtuali D13 o D14 Standard.
Le istanze di SQL Server 2014 preconfigurate dalla raccolta di Azure possono farti risparmiare molto sui costi di licenza di SQL Server e hanno gran parte del lavoro di configurazione necessario già completo nell'immagine di base. Dovresti comunque entrare e apportare alcune modifiche finali alla configurazione in base alle tue preferenze e al carico di lavoro. Infine, dovresti dedicare del tempo a eseguire alcuni benchmark delle prestazioni sulla tua macchina virtuale in modo da comprendere il livello di prestazioni che può offrire.