Jakie są najlepsze praktyki dotyczące uruchamiania programu SQL Server na maszynie wirtualnej?

21

Jakie są najlepsze praktyki dotyczące uruchamiania programu SQL Server na maszynie wirtualnej? Moje transakcje online są bardzo niskie, ale przetwarzanie danych jest duże w celu dostarczania danych raportowania do wielu stron internetowych.

JerryOL
źródło
2
Gdzie są przechowywane dyski? na lokalnym dysku twardym 5400 RPM? W sieci SAN z połączeniami światłowodowymi i dyskami wrzecionowymi 15k? Wszystkie maszyny wirtualne w dzisiejszych czasach dotyczą IO, procesor jest prawie niczym w rozważaniu.
jcolebrand
Nie, nie lokalnie. Ale nie znam szczegółów SAN.
JerryOL,
2
Nie mogę dodawać komentarzy, ponieważ nie mam jeszcze wystarczającej reputacji, ale [według Microsoft] [1] w 2008 r. R2 różnica w wydajności między stałymi a dynamicznymi dyskami wirtualnymi jest niewielka. [1]: blogs.msdn.com/b/tvoellm/archive/2009/08/05/…
Terry Bochaton,
@Terry, w przyszłości możesz zgłosić taką odpowiedź, a my ją przekonwertujemy.
jcolebrand

Odpowiedzi:

18

Podobnie jak w przypadku maszyn fizycznych IO jest królem. Nastąpi zauważalne trafienie we / wy wirtualizacji (stopień trafienia zależy od wybranej technologii), więc upewnij się, że nie zrobisz nic, co może to zaostrzyć i pogorszyć wydajność we / wy.

  • Zawsze używany stały rozmiar, a nie dynamiczne dyski wirtualne, i upewnij się, że dyski / macierze są wystarczające. Dynamiczne dyski vdisk są mniej wydajne niż dyski o stałym rozmiarze.
  • Jeśli dane na maszynach wirtualnych nie mają krytycznego znaczenia dla misji, włącz zdolność maszyn wirtualnych do buforowania zapisów (skutecznie kłamiąc systemowi-gościowi, kiedy rzeczy są fizycznie zapisywane na dysku) w celu zwiększenia wydajności. Jest to przydatne w przypadku maszyny do programowania i testowania, w której dane można łatwo zastąpić, lub replik tylko do odczytu lokalnych dla wzorca, które można odtworzyć, jeśli wystąpią jakiekolwiek problemy, ale zaleca się, aby takie opcje pozostały wyłączone w przypadku systemów produkcyjnych i kopii zapasowych, takich jak zwiększają ryzyko utraty danych (lub, co gorsza, uszkodzenia), jeśli maszyna niespodziewanie się wyłączy.
  • Upewnij się, że każda maszyna wirtualna ma wystarczającą ilość pamięci RAM, aby normalny zestaw roboczy każdej bazy danych zmieścił się w pamięci z wystarczającą ilością miejsca, aby zaoszczędzić niepotrzebne operacje wejścia / wyjścia. Upewnij się również, że hiperwizor nie będzie stronicował pamięci RAM maszyn wirtualnych w żadnym momencie (na przykład większość produktów VMWare może to zrobić, co pozwala na uruchomienie większego zestawu maszyn wirtualnych niż w innym przypadku na tym samym sprzęcie, ale obniżenie wydajności może bądź masywny - istnieje możliwość dostrojenia lub wyłączenia tego zachowania).
  • Jeśli host korzysta z macierzy RAID5, rozważ przejście na RAID10. Spowoduje to zmniejszenie dostępnego miejsca, ale usunie problemy z wydajnością zapisu, które mogą być widoczne w przypadku RAID5 (lub 6).
  • W przypadku maszyn wirtualnych, które prawdopodobnie zobaczą dużo aktywności we / wy, rozważ przydzielenie im własnego dysku lub macierzy, albo tylko niech współużytkują swoje dyski / macierze z danymi o niskiej aktywności.

Oczywiście, jeśli cała baza danych (i cała reszta uruchomionej maszyny wirtualnej) mieści się w pamięci RAM przydzielonej maszynie wirtualnej i widzi bardzo małą aktywność zapisu, wydajność operacji wejścia / wyjścia może być znacznie mniejszym problemem.

Edycja: kilka dodatkowych punktów:

  • Jeśli używasz dysków wirtualnych, upewnij się, że do wydajności używany jest najlepszy typ kontrolera. Niektóre rozwiązania do wirtualizacji oferują kilka typów kontrolerów wirtualnych dla lepszej kompatybilności gościa, a niektóre mogą być mniej wydajne niż inne z powodu ograniczeń protokołu w projekcie, który emulują i ograniczeń w sterownikach systemu gościa.
  • Jeśli Twoje rozwiązanie do wirtualizacji oferuje określone sterowniki dla wirtualnego kontrolera napędu, upewnij się, że używa go system operacyjny gościa - mogą one przyspieszyć masowe operacje we / wy poprzez zmniejszenie liczby kopii pamięci do pamięci i kontekstu gościa <-> hiperwizora <-> gościa przełączniki biorące udział w niektórych operacjach.
  • Dwa powyższe punkty mają zastosowanie, jeśli używasz pamięci sieciowej, takiej jak proste udziały SMB lub iSCSI: upewnij się, że używasz najbardziej wydajnego wirtualnego kontrolera sieci w ofercie i że twój system operacyjny gościa używa do niego zalecanego sterownika, w przeciwnym razie oba opóźnienia a przepustowość może być bardziej ograniczona niż jest to konieczne przez warstwę wirtualizacji.
David Spillett
źródło
1
Cóż, tak i nie. Wolumin SAN zamontowany w maszynie wirtualnej za pośrednictwem inicjatora iSCSI będzie cholernie szybki!
Gajusz
1
@ Gaius: dobra uwaga. Dodałem notatkę dotyczącą vNIC i sterowników, które prawdopodobnie będą źródłem dodatkowych wąskich gardeł w takich przypadkach.
David Spillett,
9

Oto dobre miejsce na rozpoczęcie: http://www.brentozar.com/sql/virtualization-best-practices/ i http://sqlskills.com/blogs/brent/category/Virtualization.aspx

Eric Humphrey - lotsahelp
źródło
1
~ Czy są jakieś części, które możesz wyróżnić w artykułach?
jcolebrand
2
Nie. Ponieważ wirtualizacja może być złożonym tematem, radziłbym przeczytać wszystko. To naprawdę niewiele. Jeśli PO szuka szybkiej odpowiedzi, prawdopodobnie nie będzie to poprawna odpowiedź.
Eric Humphrey - lotsahelp
Poszukiwałem ogólnie dobrych praktyk. Właśnie przeniosłem SQLServer 2000 Standard na nową maszynę wirtualną, próbuję rozwiązać problemy z wywoływaniem przez strony internetowe procedur przechowywanych, które przekroczą limit czasu, jeśli nie zostaną zapisane w pamięci podręcznej; nawet jeśli pamięć fizyczna i pamięć wirtualna są takie same, 4 GB.
JerryOL,
1
@JerryOL: Upewnij się, że pamięć RAM przydzielona do maszyny wirtualnej nie może być stronicowana (w przeciwnym razie przydzielenie 4 GB do maszyny wirtualnej nie jest tym samym, co posiadanie 4 GB na maszynie fizycznej) i jeśli używane rozwiązanie wirtualizacji oferuje różne typy kontrolerów wirtualnych upewnia się, że wybrano najlepszy, a system operacyjny gościa używa właściwego sterownika.
David Spillett,