Perché il mio Azure SQL Server è così lento?


10

Al momento disponiamo di una VM molto poco potente e stiamo proponendo di passare a una VM di Azure con specifiche migliori. Il problema è che la macchina virtuale di Azure è molto più lenta della macchina virtuale originale anche se si tratta di una specifica superiore.

Il server originale è una VM a 2 core con 2 GB di memoria che è anche un server Web. È in esecuzione Microsoft SQL Server Web Edition 2008 R2 e poiché questo server viene utilizzato per altre cose, abbiamo dovuto limitare la memoria massima del server in SQL Server a 512 MB .

Il nuovo server è una VM a 4 core con 7 GB di memoria che è solo un server di database. È in esecuzione Microsoft SQL Server Standard Edition 2008 R2 e non abbiamo limitato la quantità di memoria che SQL Server può utilizzare.

Questo è uno dei due server installati in un ambiente con mirroring ma il database su cui sto eseguendo i test non è mirrorato. Gli altri database su questo server non ricevono molto traffico al momento (infatti, Activity Monitor non mostra alcuna attività sugli altri DB mentre stavo eseguendo questi test).

Mi rendo conto che un problema con le macchine virtuali di Azure è che i dischi rigidi sono una risorsa di rete, quindi sarebbe la fonte del rallentamento ma è ancora più lento anche quando ci sono 0 letture fisiche mostrate nelle statistiche IO.

Ho seguito i consigli di ottimizzazione in questa pagina nella macchina virtuale di Azure, incluso lo striping dei dischi (due dischi per unità) e l'inserimento di file di registro e dati su unità separate.

Le uniche cose che non ho fatto sono abilitare la compressione della pagina, limitare la crescita automatica sul database e spostare il registro errori del server SQL e tracciare le directory dei file su dischi di dati. Non l'ho nemmeno fatto sul server più vecchio.

Il vecchio server non ha eseguito questa regolazione e i file di registro e di dati si trovano sulla stessa unità che non è a strisce.

Il database sul server corrente è 65 GB (45 dati e 20 log) che era un po 'troppo grande per essere trasferito sul nuovo server, quindi sto testando su un DB più piccolo (6 dati e 13,5 log)

I risultati sul vecchio server sono CPU time = 1311 ms, elapsed time = 1057 ms.e sul nuovo server sono CPU time = 1281 ms, elapsed time = 2525 ms. Questa è solo una corsa ma i risultati sono rappresentativi di quello che sto vedendo normalmente.

Il nuovo server sembra avere un tempo trascorso significativamente più lungo del tempo della CPU. È un problema e c'è qualcosa che posso fare per rintracciare la causa?

Quali altri passaggi posso prendere per scoprire perché questo server sta andando così lentamente quando sembra che dovrebbe essere più veloce del vecchio server?


1
Maxdop 1? Hai confrontato i piani di esecuzione, preso le statistiche prima e dopo l'attesa e verificato il blocco?
Aaron Bertrand

1
Quante unità dati? Con l'archiviazione BLOB di pagine standard, ogni unità è limitata al minore di 300 IOPS nel livello di base o 500 in standard, che è molto meno di un disco di filatura locale. È indispensabile avere il maggior numero possibile di unità (vhd) per massimizzare IOPS e larghezza di banda. È possibile utilizzare gli spazi di archiviazione di Windows per evitare la necessità di creare un file di dati separato su ciascuna unità.
Dan Guzman,

Il nuovo server ha 4 dischi rigidi virtuali con striping in due unità, quindi ho 1000 IOPS per i registri e 1000 IOPS per i dati.
Steve Kaye,

Un VHD di archiviazione standard per blog di pagine fornisce solo circa 30 MB / sec di larghezza di banda a causa della limitazione, quindi è solo 60 MB / sec di aggregato. Prendi in considerazione la creazione di 14 dischi rigidi virtuali per dati fino a 420 MB / sec e lo striping tra tutti.
Dan Guzman,

Posso avere solo 8 dischi in quanto è un'istanza A3, quindi dovrei passare ad A4 per fare ciò che è il doppio del prezzo. Non penso che questo sia un problema di unità, dato che soprattutto i test avevano 0 letture fisiche elencate nelle statistiche IO.
Steve Kaye,

Risposte:


2

Per quello che vale, ho finito di cambiare la VM in Azure dal tipo A al tipo D e quindi collegare un altro disco e spostare TEMPDB su quel disco. Quindi la mia VM finale ora è uno standard D2 con 7 GB di RAM e tre dischi di dati, uno per i file MDF, un altro per i file LDF e il nuovo disco TEMPDB.

Ho smesso di provare a capire con l'A3 alcune cose che hai menzionato e semplicemente aggiornare la macchina virtuale. Sono persino passato da A2 ad A3 e anche se ho riscontrato alcuni miglioramenti, ho finito per passare a una VM D2.

Nel documento che hai dichiarato, Microsoft consiglia un D3 per Enterprise Edition o D2 per Web o Standard Edition e l'uso di Archiviazione Premium, tra l'altro nell'elenco di controllo all'inizio del documento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.