it-swarm.dev

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

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 sprawozdawczych do wielu stron internetowych.

21
JerryOL

Podobnie jak w przypadku maszyn fizycznych IO jest królem. Będzie zauważalne IO hit z wirtualizacji (jak duży hit zależy od wybranej technologii), więc upewnij się, że nie robisz nic, co mogłoby to zaostrzyć i zaszkodzić IO wydajność dalej.

  • 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 opcję VM rozwiązania do buforowania zapisów (skutecznie kłamią systemowi-gościowi, kiedy rzeczy są fizycznie zapisywane na dysku) dla dodatkowej wydajności. jest przydatny na maszynie programistycznej i testującej, w której dane można łatwo wymienić, 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 dla systemów produkcyjnych i kopii zapasowych, ponieważ zwiększyć ryzyko utraty danych (lub, co gorsza, uszkodzenia), jeśli maszyna niespodziewanie się wyłączy.
  • Upewnij się, że każdy VM ma wystarczającą ilość RAM dedykowane do niego), tak aby normalny zestaw roboczy każdej bazy danych mieścił się w pamięci z wystarczającą ilością miejsca do uniknięcia, aby uniknąć niepotrzebne operacje we/wy. Upewnij się również, że hiperwizor nie wysyła stron maszyn wirtualnych RAM w dowolnym momencie (na przykład większość produktów VMWare może to zrobić, co pozwala na uruchomienie większego zestawu maszyn wirtualnych niż ty) w przeciwnym razie mógłby na tym samym sprzęcie, ale spadek wydajności może być ogromny - 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 IO, rozważ podanie własnego dysku lub tablicy) lub poproś je, aby współużytkowały swoje dyski/tablice z danymi, które widzi niska aktywność.

Oczywiście, jeśli cała twoja baza danych (i wszystko inne VM działa)) pasuje do RAM przydzielone do VM i widzi bardzo małą aktywność zapisu, IO może być znacznie mniejszym problemem.

Edytuj: 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 wirtualizacji oferują kilka typów kontrolerów wirtualnych dla lepszej kompatybilności z gośćmi, a niektóre mogą być mniej wydajne niż inne z powodu ograniczeń protokołu w projekcie, który emulują oraz ograniczeń w sterownikach systemu gościa.
  • Jeśli Twoje rozwiązanie do wirtualizacji oferuje określone sterowniki dla wirtualnego kontrolera napędów, upewnij się, że używa ich system operacyjny gościa - mogą one przyspieszyć masę IO poprzez zmniejszenie liczby kopii pamięci do pamięci i hosta <-> hypervisor <-> przełączniki kontekstu gościa biorące udział w niektórych operacjach.
  • Dwa powyższe punkty mają zastosowanie, jeśli używasz pamięci sieciowej, takiej jak simple SMB lub iSCSI): upewnij się, że używasz najbardziej wydajnego kontrolera sieci wirtualnej w ofercie i że używasz systemu operacyjnego gościa zalecany sterownik, w przeciwnym razie zarówno opóźnienie, jak i przepustowość mogą być bardziej ograniczone niż jest to konieczne ze względu na warstwę wirtualizacji.
18
David Spillett