Dlaczego mój Azure SQL Server jest taki wolny?

10

Obecnie mamy maszynę wirtualną, która jest bardzo słaba i proponuje przejście na maszynę wirtualną platformy Azure o lepszych specyfikacjach. Problem polega na tym, że maszyna wirtualna Azure jest znacznie wolniejsza niż oryginalna maszyna wirtualna, nawet jeśli ma wyższą specyfikację.

Oryginalny serwer to 2-rdzeniowa maszyna wirtualna z 2 GB pamięci, która jest także serwerem sieciowym. Działa pod kontrolą Microsoft SQL Server Web Edition 2008 R2, a ponieważ ten serwer jest używany do innych celów, musieliśmy ograniczyć maksymalną pamięć serwera SQL Server do 512 MB .

Nowy serwer to 4-rdzeniowa maszyna wirtualna z 7 GB pamięci, która jest tylko serwerem bazy danych. Działa z Microsoft SQL Server Standard Edition 2008 R2 i nie ograniczyliśmy ilości pamięci, z której może korzystać SQL Server.

Jest to jeden z dwóch serwerów skonfigurowanych w środowisku dublowanym, ale baza danych, na której uruchamiam testy, nie jest dublowana. Inne bazy danych na tym serwerze nie mają obecnie dużego ruchu (w rzeczywistości Monitor aktywności nie pokazuje żadnej aktywności na innych bazach danych podczas wykonywania tych testów).

Zdaję sobie sprawę, że problem z maszynami wirtualnymi platformy Azure polega na tym, że dyski twarde są zasobem sieciowym, więc byłoby to przyczyną spowolnienia, ale nadal jest wolniejsze, nawet jeśli w statystykach We / Wy jest 0 fizycznych odczytów.

Postępowałem zgodnie ze wskazówkami dotyczącymi tuningu na tej maszynie wirtualnej platformy Azure, w tym rozłożeniem dysków (dwa dyski na dysk) i umieszczeniem plików dziennika i danych na osobnych dyskach.

Jedyne rzeczy, których nie zrobiłem, to włączenie kompresji strony, ograniczenie automatycznego powiększania bazy danych i przeniesienie dziennika błędów serwera SQL i śledzenie katalogów plików na dyski danych. Nie zrobiłem tego też na starszym serwerze.

Stary serwer nie wykonał tego strojenia, a pliki dziennika i danych znajdują się na tym samym dysku, który nie jest rozłożony.

Baza danych na bieżącym serwerze ma 65 GB (45 danych i 20 logów), co było trochę za duże, aby przenieść je na nowy serwer, więc testuję na mniejszej DB (6 danych i 13,5 logu)

Wyniki na starym serwerze są, CPU time = 1311 ms, elapsed time = 1057 ms.a na nowym są CPU time = 1281 ms, elapsed time = 2525 ms. to tylko jedno uruchomienie, ale wyniki są reprezentatywne dla tego, co zwykle widzę.

Wydaje się, że nowy serwer ciągle ma upływający czas znacznie dłuższy niż czas procesora. Czy to problem i czy mogę coś zrobić, aby znaleźć przyczynę?

Jakie inne kroki mogę podjąć, aby dowiedzieć się, dlaczego ten serwer działa tak wolno, gdy wygląda na to, że powinien być szybszy niż stary serwer?

Steve Kaye
źródło
1
Maxdop 1? Czy porównałeś plany wykonania, wziąłeś statystyki przed i po odczekaniu i sprawdziłeś, czy chcesz je zablokować?
Aaron Bertrand
1
Ile dysków danych? W przypadku standardowego magazynu obiektów blob na każdy dysk jest ograniczony do mniejszej liczby 300 IOPS w warstwie podstawowej lub 500 w standardzie, co jest znacznie mniej niż w przypadku przedwczesnego wirowania dysku. Konieczne jest posiadanie jak największej liczby dysków (VHD), aby zmaksymalizować IOPS i przepustowość. Możesz użyć Windows Storage Spaces, aby uniknąć konieczności tworzenia osobnego pliku danych na każdym dysku.
Dan Guzman
Nowy serwer ma 4 dyski VHD rozłożone na dwa dyski, więc mam 1000 IOPS dla dzienników i 1000 IOPS dla danych.
Steve Kaye,
Standardowy dysk VHD do przechowywania blogów zapewnia przepustowość około 30 MB / s z powodu ograniczania przepustowości, więc jest to tylko 60 MB / s agregacji. Rozważ utworzenie 14 dysków VHD danych z prędkością do 420 MB / sek.
Dan Guzman
Mogę mieć tylko 8 dysków, ponieważ jest to instancja A3, więc musiałbym uaktualnić do formatu A4, aby zrobić to, co jest dwukrotnością ceny. Nie sądzę, że jest to problem z napędem, ponieważ testy przede wszystkim miały 0 fizycznych odczytów wymienionych w statystykach IO.
Steve Kaye

Odpowiedzi:

2

Co warte jest, zakończyłem zmianę maszyny wirtualnej na platformie Azure z typu A na typ D, a następnie podłączenie innego dysku i przeniesienie TEMPDB na ten dysk. Tak więc moją ostatnią maszyną wirtualną jest teraz D2 Standard z 7 GB pamięci RAM i trzema dyskami danych, jeden dla plików MDF, drugi dla plików LDF i nowy dysk TEMPDB.

Zrezygnowałem z próby zrozumienia z A3 niektórych rzeczy, o których wspomniałeś, i po prostu zaktualizowałem maszynę wirtualną. Przeszedłem nawet z A2 na A3 i chociaż znalazłem pewne ulepszenia, ostatecznie zmieniłem się na maszynę wirtualną D2.

W podanym dokumencie Microsoft zaleca D3 dla Enterprise Edition lub D2 dla Web lub Standard Edition oraz korzystanie z Premium Storage, między innymi na liście kontrolnej na początku dokumentu.

Guillermo Taylor
źródło