Warum ist mein Azure SQL Server so langsam?

10

Wir haben derzeit eine VM mit sehr geringer Leistung und schlagen vor, auf eine Azure-VM mit besseren Spezifikationen umzusteigen. Das Problem ist, dass die Azure-VM viel langsamer als die ursprüngliche VM ist, obwohl sie eine höhere Spezifikation aufweist.

Der ursprüngliche Server ist eine 2-Kern-VM mit 2 GB Speicher, die auch ein Webserver ist. Es wird Microsoft SQL Server Web Edition 2008 R2 ausgeführt. Da dieser Server für andere Zwecke verwendet wird, mussten wir den maximalen Serverspeicher in SQL Server auf 512 MB beschränken .

Der neue Server ist eine 4-Kern-VM mit 7 GB Speicher, die nur ein Datenbankserver ist. Es wird Microsoft SQL Server Standard Edition 2008 R2 ausgeführt, und wir haben die Speicherkapazität, die SQL Server verwenden kann, nicht begrenzt.

Dies ist einer von zwei Servern, die in einer gespiegelten Umgebung eingerichtet sind, aber die Datenbank, auf der ich Tests ausführe, wird nicht gespiegelt. Die anderen Datenbanken auf diesem Server erhalten derzeit nicht viel Datenverkehr (tatsächlich zeigt Activity Monitor keine Aktivität auf den anderen DBs an, während ich diese Tests ausgeführt habe).

Mir ist klar, dass ein Problem mit Azure-VMs darin besteht, dass die Festplatten eine Netzwerkressource sind, sodass die Verlangsamung verursacht wird. Sie ist jedoch immer noch langsamer, selbst wenn in den E / A-Statistiken keine physischen Lesevorgänge angezeigt werden.

Ich habe die Optimierungsempfehlungen auf dieser Seite der Azure-VM befolgt, einschließlich des Entfernens der Datenträger (zwei Datenträger pro Laufwerk) und des Speicherns der Protokoll- und Datendateien auf separaten Laufwerken.

Die einzigen Dinge, die ich nicht getan habe, sind die Aktivierung der Seitenkomprimierung, die Begrenzung des automatischen Wachstums in der Datenbank und das Verschieben des SQL Server-Fehlerprotokolls und der Trace-Dateiverzeichnisse auf Datenträger. Ich habe das auch auf dem älteren Server nicht gemacht.

Auf dem alten Server wurde diese Optimierung nicht durchgeführt, und die Protokoll- und Datendateien befinden sich auf demselben Laufwerk, das nicht gestreift ist.

Die Datenbank auf dem aktuellen Server hat 65 GB (45 Daten und 20 Protokolle), was etwas zu groß war, um auf den neuen Server übertragen zu werden. Ich teste also auf einer kleineren Datenbank (6 Daten und 13,5 Protokolle).

Die Ergebnisse auf dem alten Server sind CPU time = 1311 ms, elapsed time = 1057 ms.und auf dem neuen Server sind CPU time = 1281 ms, elapsed time = 2525 ms. Das ist nur ein Lauf, aber die Ergebnisse sind repräsentativ für das, was ich normalerweise sehe.

Der neue Server scheint ständig eine deutlich längere Zeit als die CPU-Zeit zu haben. Ist das ein Problem und kann ich etwas tun, um herauszufinden, was es verursacht?

Welche anderen Schritte kann ich unternehmen, um herauszufinden, warum dieser Server so langsam läuft, wenn es so aussieht, als ob er schneller als der alte Server sein sollte?

Steve Kaye
quelle
1
Maxdop 1? Haben Sie die Ausführungspläne verglichen, Statistiken vor und nach dem Warten erstellt und auf Blockierung überprüft?
Aaron Bertrand
1
Wie viele Datenlaufwerke? Beim Standard-Page-Blob-Speicher ist jedes Laufwerk auf weniger als 300 IOPS in der Basisstufe oder 500 im Standard beschränkt, was viel weniger ist als bei einer sich vor Ort drehenden Festplatte. Es ist unbedingt erforderlich, so viele Laufwerke (vhd) wie möglich zu haben, um IOPS und Bandbreite zu maximieren. Sie können Windows-Speicherbereiche verwenden, um zu vermeiden, dass auf jedem Laufwerk eine separate Datendatei erstellt werden muss.
Dan Guzman
Der neue Server verfügt über 4 VHDs, die auf zwei Laufwerke verteilt sind, sodass ich 1000 IOPS für Protokolle und 1000 IOPS für Daten habe.
Steve Kaye
Eine Standard-Seiten-Blogspeicher-VHD bietet aufgrund der Drosselung nur eine Bandbreite von etwa 30 MB / s, sodass dies insgesamt nur 60 MB / s sind. Erwägen Sie die Erstellung von 14 Daten-VHDs für bis zu 420 MB / s und das Striping unter allen.
Dan Guzman
Ich kann nur 8 Festplatten haben, da es sich um eine A3-Instanz handelt. Daher müsste ich auf A4 upgraden, um das zu tun, was doppelt so teuer ist. Ich denke nicht, dass dies ein Laufwerksproblem ist, da bei den Tests vor allem 0 physische Lesevorgänge in den E / A-Statistiken aufgeführt waren.
Steve Kaye

Antworten:

2

Für das, was es wert ist, habe ich die VM in Azure von Typ A auf Typ D geändert und dann eine andere Festplatte angehängt und die TEMPDB auf diese Festplatte verschoben. Meine letzte VM ist jetzt ein D2-Standard mit 7 GB RAM und drei Datenfestplatten, eine für die MDF-Dateien, eine für LDF-Dateien und die neue TEMPDB-Festplatte.

Ich habe es aufgegeben, mit dem A3 einige Dinge zu verstehen, die Sie erwähnt haben, und einfach die virtuelle Maschine zu aktualisieren. Ich bin sogar von A2 auf A3 gewechselt und obwohl ich einige Verbesserungen gefunden habe, bin ich zu einer D2-VM gewechselt.

In dem von Ihnen angegebenen Dokument empfiehlt Microsoft unter anderem in der Checkliste am Anfang des Dokuments eine D3 für Enterprise Edition oder D2 für Web oder Standard Edition sowie die Verwendung von Premium Storage.

Guillermo Taylor
quelle