Przechowywanie: najlepsze praktyki dotyczące wydajności SQL Server na maszynach wirtualnych platformy Azure
Dotyczy:program SQL Server na maszynie wirtualnej platformy Azure
Ten artykuł zawiera najlepsze praktyki i wskazówki dotyczące przechowywania w celu zoptymalizowania wydajności programu SQL Server na maszynach wirtualnych platformy Azure.
Zazwyczaj istnieje kompromis między optymalizacją kosztów a optymalizacją pod kątem wydajności. Ta seria najlepszych rozwiązań dotyczących wydajności koncentruje się na uzyskaniu najlepszej wydajności dla programu SQL Server na maszynach wirtualnych platformy Azure. Jeśli obciążenie jest mniej wymagające, możesz nie wymagać każdej zalecanej optymalizacji. Podczas oceniania tych zaleceń należy wziąć pod uwagę wymagania dotyczące wydajności, kosztów i wzorców obciążeń.
Aby dowiedzieć się więcej, zobacz inne artykuły z tej serii: Lista kontrolna, Rozmiar maszyny wirtualnej, Zabezpieczenia, Konfiguracja usługi HADR i Zbieranie punktów odniesienia.
Lista kontrolna
Aby uzyskać krótkie podsumowanie najlepszych praktyk dotyczących przechowywania, które szczegółowo opisano w pozostałej części artykułu, zapoznaj się z poniższą listą kontrolną:
- Monitoruj aplikację i określ wymagania dotyczące przepustowości i opóźnienia magazynu dla danych, dziennika i
tempdb
plików programu SQL Server przed wybraniem typu dysku. - Jeśli dostępne, skonfiguruj
tempdb
pliki danych i dziennika na lokalnym woluminie D: dysku SSD. Rozszerzenie agenta SQL dla IaaS zarządza folderem i uprawnieniami wymaganymi podczas ponownej aprowizacji. - Aby zoptymalizować wydajność magazynu, zaplanuj największą dostępną liczbę operacji we/wy na sekundę bez buforowania i użyj buforowania danych jako funkcji wydajności dla odczytów danych, unikając ograniczania wydajności maszyn wirtualnych i dysków.
- W przypadku korzystania z maszyn wirtualnych z serii Ebdsv5 lub Ebsv5 SQL Server użyj dysków SSD w warstwie Premium w wersji 2 dla najlepszej wydajności cenowej. Maszynę wirtualną SQL Server można wdrożyć z użyciem dysków Premium SSD v2 za pomocą portalu Azure (obecnie w wersji zapoznawczej).
- Jeśli obciążenie wymaga więcej niż 160 000 operacji we/wy na sekundę, użyj dysków Premium SSD v2 lub dysków Azure Ultra.
- Umieść dane, dzienniki i
tempdb
pliki na oddzielnych dyskach.- W przypadku dysku danych użyj dysków Premium P30 i P40 lub mniejszych, aby zapewnić obsługę pamięci podręcznej. W przypadku korzystania z serii maszyn wirtualnych Ebdsv5 użyj dysków SSD Premium v2, która zapewnia lepszą wydajność cenową dla obciążeń wymagających wysokiej przepustowości operacji we/wy i operacji we/wy.
- Dla planu dysków dziennika oceniającego pojemność i wydajność testową w stosunku do kosztów przy użyciu Premium SSD w wersji 2 lub dysków Premium SSD P30 – P80
- Jeśli wymagane jest opóźnienie magazynu poniżej milisekundy, użyj dysków Premium SSD v2 lub dysków ultra platformy Azure dla dziennika transakcji.
- W przypadku wdrożeń maszyn wirtualnych serii M należy rozważyć akcelerator zapisu zamiast dysków Ultra na platformie Azure.
- Umieść tempdb na dysku tymczasowym (dysk tymczasowy jest efemeryczny i domyślnie korzysta z
D:\
) dla większości obciążeń SQL Server, które nie są częścią wystąpienia klastra trybu failover (FCI), po wybraniu optymalnego rozmiaru maszyny wirtualnej.- Jeśli pojemność dysku lokalnego nie jest wystarczająca dla
tempdb
, rozważ powiększenie maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Zasady buforowania plików danych.
- Jeśli pojemność dysku lokalnego nie jest wystarczająca dla
- W przypadku wystąpień klastra trybu failover (FCI) umieść
tempdb
w magazynie udostępnionym.- Jeśli obciążenie FCI silnie zależy od
tempdb
wydajności dysku, to jako element zaawansowanej konfiguracji umieśćtempdb
na lokalnym efemerycznym dysku SSD (domyślnyD:\
), który nie jest częścią magazynu FCI. Ta konfiguracja wymaga niestandardowego monitorowania i działań, aby upewnić się, że lokalny dysk SSD efemeryczny (domyślnyD:\
) jest dostępny przez cały czas, ponieważ jakiekolwiek awarie tego dysku nie będą wyzwalać działań z FCI.
- Jeśli obciążenie FCI silnie zależy od
- Zastosuj striping dla wielu dysków danych platformy Azure przy użyciu Przestrzeni magazynowej, aby zwiększyć przepustowość operacji we/wy do limitu IOPS i przepływności docelowej maszyny wirtualnej.
- Ustaw buforowanie hosta na tylko do odczytu dla dysków z plikami danych.
- Ustaw buforowanie na hoście na none dla dysków z plikami dziennika.
- Nie włączaj buforowania odczytu/zapisu na dyskach zawierających dane lub pliki dziennika programu SQL Server.
- Przed zmianą ustawień pamięci podręcznej dysku zawsze zatrzymaj usługę SQL Server.
- Podczas migracji kilku różnych obciążeń do chmury usługa Azure Elastic SAN może być opłacalnym rozwiązaniem magazynu skonsolidowanego. Jednak korzystając z Azure Elastic SAN, aby osiągnąć wymaganą przepustowość lub IOPS dla obciążeń SQL Server, często konieczne jest nadmierne zwiększenie pojemności. Chociaż nie jest to zwykle odpowiednie dla pojedynczych obciążeń programu SQL Server, można uzyskać ekonomiczne rozwiązanie podczas łączenia obciążeń o niskiej wydajności z programem SQL Server.
- W przypadku obciążeń programistycznych i testowych oraz długoterminowego archiwizowania kopii zapasowych należy rozważyć użycie magazynu standardowego. Nie zaleca się używania dysków HDD/SSD standardowego typu w przypadku obciążeń produkcyjnych.
- Wybuch dysku na podstawie kredytów (P1-P20) powinien być brany pod uwagę tylko w przypadku mniejszych obciążeń deweloperskich/testowych i systemów działowych.
- Aby zoptymalizować wydajność magazynu, zapewnij sobie najwyższą dostępną liczbę niebuforowanych operacji we/wy na sekundę i użyj buforowania danych jako funkcji zwiększającej wydajność dla odczytów danych, unikając jednocześnie ograniczania/przerywania działania maszyn wirtualnych i dysków.
- Sformatuj dysk danych, aby użyć rozmiaru jednostki alokacji 64 KB dla wszystkich plików danych umieszczonych na dysku innym niż dysk tymczasowy
D:\
(który ma domyślnie 4 KB). Maszyny wirtualne SQL Server wdrożone przez Azure Marketplace mają dyski danych sformatowane z rozmiarem jednostki alokacji i przeplataniem dla puli magazynowej ustawionym na 64 KB. - Skonfiguruj konto magazynowe w tym samym regionie co maszyna wirtualna SQL Server.
- Wyłącz magazyn geograficznie nadmiarowy platformy Azure (replikacja geograficzna) i użyj magazynu LRS (magazyn lokalnie nadmiarowy) na koncie magazynu.
- Włącz ocenę najlepszych rozwiązań SQL, aby zidentyfikować możliwe problemy z wydajnością i ocenić, czy maszyna wirtualna z programem SQL Server jest skonfigurowana do stosowania najlepszych rozwiązań.
- Przejrzyj i monitoruj limity dysków oraz maszyn wirtualnych, używając metryk wykorzystania operacji we/wy magazynu.
- Wyklucz pliki programu SQL Server ze skanowania oprogramowania antywirusowego, w tym pliki danych, pliki dziennika i pliki kopii zapasowej.
Aby porównać listę kontrolną magazynowania z innymi najlepszymi praktykami, zobacz kompleksową listę kontrolną najlepszych praktyk dotyczących wydajności.
Omówienie
Aby znaleźć najbardziej efektywną konfigurację obciążeń programu SQL Server na maszynie wirtualnej platformy Azure, zacznij od zmierzenia wydajności magazynu aplikacji biznesowej. Gdy są znane wymagania dotyczące magazynu, należy wybrać maszynę wirtualną, która obsługuje wymaganą liczbę IOPS oraz przepustowość przy odpowiednim stosunku pamięci do rdzeni wirtualnych.
Wybierz rozmiar maszyny wirtualnej z wystarczającą skalowalnością pamięci dla Twojego obciążenia oraz konfiguracją dysków (zwykle w puli pamięci masowej), które spełniają wymagania dotyczące pojemności i wydajności Twojej firmy.
Typ dysku zależy od typu pliku hostowanego na dysku i szczytowych wymagań dotyczących wydajności.
Napiwek
Aprowizowanie maszyny wirtualnej z programem SQL Server za pośrednictwem witryny Azure Portal ułatwia zapoznanie się z procesem konfiguracji magazynu i implementowanie większości najlepszych rozwiązań dotyczących magazynu, takich jak tworzenie oddzielnych pul magazynów dla plików danych i dzienników, ukierunkowanie tempdb
na D:\
dysk i włączanie optymalnych zasad buforowania. Aby uzyskać więcej informacji na temat aprowizacji i konfigurowania magazynu, zobacz Konfiguracja magazynu maszyn wirtualnych SQL.
Typy dysków maszyny wirtualnej
Możesz wybrać poziom wydajności dla dysków. Typy dysków zarządzanych dostępnych jako podstawowe nośniki danych (w kolejności wzrastającej wydajności) to dyski twarde Standardowe (HDD), dyski półprzewodnikowe Standardowe (SSD), dyski SSD Premium, dyski SSD Premium v2 i Dyski Ultra.
W przypadku dysków HDD w wersji Standardowej, dysków SSD w wersji Standardowej oraz dysków SSD w wersji Premium, wydajność dysku zwiększa się wraz z jego rozmiarem, pogrupowanym według etykiet dysków Premium, takich jak P1 z 4 GiB miejsca i 120 IOPS do P80 z 32 TiB przestrzeni oraz 20 000 IOPS. Usługa Premium Storage obsługuje pamięć podręczną, która pomaga zwiększyć wydajność odczytu i zapisu dla niektórych zadań. Aby uzyskać więcej informacji, zobacz Omówienie dysków zarządzanych.
Wydajność dysków Premium SSD v2 i Ultra można zmienić niezależnie od rozmiaru dysku. Aby uzyskać szczegółowe informacje, zobacz wydajność dysków Ultra i wydajność dysków Premium SSD v2. Jeśli Twoje obciążenie wymaga więcej niż 160 000 operacji we/wy na sekundę (IOPS), rozważ użycie dysków SSD Premium w wersji 2 lub dysków Ultra.
Istnieją również trzy główne role dysku, które należy wziąć pod uwagę w przypadku programu SQL Server na maszynie wirtualnej platformy Azure — dysku systemu operacyjnego, dysku tymczasowego i dysków danych. Dokładnie wybierz zawartość przechowywaną na dysku (C:\)
systemu operacyjnego i efemeryczny dysk (D:\)
tymczasowy .
Dysk systemu operacyjnego
Dysk systemu operacyjnego to dysk VHD, który można uruchomić i zamontować jako działająca wersja systemu operacyjnego i jest oznaczony jako dysk C:\
. Podczas tworzenia maszyny wirtualnej usługi Azure platforma dołącza co najmniej jeden dysk do maszyny wirtualnej jako dysk systemu operacyjnego. Dysk C:\
jest domyślną lokalizacją instalacji aplikacji i konfiguracji plików.
W przypadku produkcyjnych środowisk SQL Server nie używaj dysku systemu operacyjnego do plików danych, plików dziennika i dzienników błędów.
Dysk tymczasowy
Wiele maszyn wirtualnych Azure zawiera inny typ dysku, zwany dyskiem tymczasowym (oznaczonym jako dysk D:\
). W zależności od serii maszyn wirtualnych i rozmiaru pojemność tego dysku będzie się różnić. Dysk tymczasowy jest efemeryczny, co oznacza, że magazyn dyskowy jest odtwarzany (czyli jego przydział jest cofany i przydzielany ponownie), gdy maszyna wirtualna zostaje ponownie uruchomiona lub przeniesiona na innego hosta (na przykład w celu przywracania usługi).
Dysk magazynu tymczasowego nie jest utrwalany w magazynie zdalnym i dlatego nie powinien przechowywać plików bazy danych użytkownika, plików dziennika transakcji ani żadnych elementów, które muszą zostać zachowane. Można go na przykład użyć dla rozszerzeń puli buforów, pliku stronicowania i tempdb
.
Umieść tempdb
na lokalnym tymczasowym dysku SSD D:\
dla obciążeń programu SQL Server, chyba że zużycie lokalnej pamięci podręcznej jest problemem. Jeśli używasz maszyny wirtualnej, która nie ma dysku tymczasowego, zaleca się umieszczenie tempdb
na własnym izolowanym dysku lub w puli pamięciowej z buforowaniem ustawionym na tryb tylko do odczytu. Aby dowiedzieć się więcej, zobacz zasady buforowania danych bazy danych tempdb.
Dyski danych
Dyski danych to dyski magazynu zdalnego, które są często tworzone w pulach magazynów w celu przekroczenia pojemności i wydajności, którą każdy pojedynczy dysk może zaoferować maszynie wirtualnej.
Dodaj minimalną liczbę dysków, które spełniają wymagania dotyczące IOPS, przepustowości oraz pojemności twojego obciążenia. Nie należy przekraczać maksymalnej liczby dysków danych najmniejszej maszyny wirtualnej, do której planujesz zmienić rozmiar.
Umieść pliki danych i dzienników na dyskach danych przygotowanych zgodnie z wymaganiami wydajności.
Sformatuj dysk danych, aby użyć rozmiaru jednostki alokacji 64 KB dla wszystkich plików danych umieszczonych na dysku innym niż dysk tymczasowy D:\
(który ma domyślnie 4 KB). Maszyny wirtualne SQL Server wdrożone przez Azure Marketplace mają dyski danych sformatowane z rozmiarem jednostki alokacji i przeplataniem dla puli magazynowej ustawionym na 64 KB.
Uwaga
Istnieje również możliwość hostowania plików bazy danych programu SQL Server bezpośrednio w usłudze Azure Blob Storage lub w magazynie SMB, takim jak udział plików Azure Premium, ale zalecamy używanie dysków zarządzanych platformy Azure w celu uzyskania najlepszej wydajności, niezawodności i dostępności funkcji.
Premium SSD v2
Podczas uruchamiania obciążeń programu SQL Server w obsługiwanych regionach, należy używać dysków Premium SSD v2, jeśli bieżące ograniczenia są odpowiednie dla danego środowiska. W zależności od konfiguracji dyski SSD w warstwie Premium w wersji 2 mogą być tańsze niż dyski SSD w warstwie Premium, a także zapewnić lepszą wydajność. Dzięki dyskom Premium SSD v2 można indywidualnie dostosować przepustowość lub liczbę operacji we/wy na sekundę niezależnie od rozmiaru dysku. Możliwość indywidualnego dostosowywania opcji wydajności pozwala na większe oszczędności kosztów i umożliwia wykonywanie skryptów zmian w celu spełnienia wymagań dotyczących wydajności w przewidywanych lub znanych okresach potrzeb.
Zalecamy używanie dysków SSD w warstwie Premium w wersji 2 w przypadku korzystania z serii maszyn wirtualnych Ebdsv5 lub Ebsv5, ponieważ jest to bardziej ekonomiczne rozwiązanie dla tych maszyn o wysokiej przepływności we/wy. Jeśli obciążenie wymaga więcej niż 160 000 operacji we/wy na sekundę, rozważ użycie dysków Premium SSD w wersji 2 lub Ultra Disks.
Możesz wdrożyć swoje maszyny wirtualne SQL Server z dyskami SSD Premium v2 przy użyciu portalu Azure (obecnie w wersji zapoznawczej).
Jeśli wdrażasz maszynę wirtualną z programem SQL Server przy użyciu witryny Azure Portal i chcesz używać dysków SSD w warstwie Premium w wersji 2, obecnie masz ograniczenie do maszyn wirtualnych serii Ebdsv5 lub Ebsv5. Jeśli jednak ręcznie utworzysz maszynę wirtualną przy użyciu magazynu SSD w wersji 2 w warstwie Premium, a następnie ręcznie zainstalujesz program SQL Server na maszynie wirtualnej, możesz użyć dowolnej serii maszyn wirtualnych, która obsługuje dyski SSD w warstwie Premium w wersji 2. Pamiętaj, aby zarejestrować maszynę wirtualną programu SQL Server przy użyciu rozszerzenia agenta IaaS SQL, aby móc korzystać ze wszystkich korzyści oferowanych przez rozszerzenie.
Azure Elastic SAN
Azure Elastic SAN to oferta magazynu dołączonego do sieci, która zapewnia klientom elastyczne i skalowalne rozwiązanie z możliwością obniżenia kosztów dzięki konsolidacji magazynu. Usługa Azure Elastic SAN zapewnia ekonomiczne, wydajne i niezawodne rozwiązanie magazynu blokowego, które łączy się z różnymi usługami obliczeniowymi platformy Azure za pośrednictwem protokołu iSCSI. Elastyczna sieć SAN umożliwia bezproblemowe przejście z istniejącej jednostki magazynu SAN do chmury bez konieczności refaktoryzacji architektury aplikacji klienta.
To rozwiązanie umożliwia skalowanie do milionów IOPS, dwucyfrowej przepustowości w GB/s oraz opóźnień rzędu kilku milisekund, z wbudowaną odpornością w celu zminimalizowania przestojów. Użyj elastycznej sieci SAN platformy Azure, jeśli chcesz skonsolidować magazyn, pracować z wieloma usługami obliczeniowymi lub mieć obciążenia wymagające wysokiego poziomu przepływności podczas przenoszenia magazynu przez przepustowość sieci. Jednak ponieważ osiągnięcie żądanej przepływności/liczby operacji we/wy na sekundę dla obciążeń programu SQL Server często wymaga nadmiernej pojemności aprowizacji, zwykle nie jest odpowiednia dla obciążeń pojedynczych programu SQL Server. Aby uzyskać najbardziej ekonomiczne rozwiązanie z elastyczną siecią SAN, rozważ użycie go jako magazynu dla wielu obciążeń programu SQL Server lub kombinacji programu SQL Server i innych obciążeń o niskiej wydajności.
Rozważ umieszczenie obciążeń programu SQL Server w elastycznej sieci SAN w celu uzyskania lepszej wydajności kosztowej, konsolidacji magazynu, dynamicznego udostępniania wydajności i zwiększenia przepływności magazynu.
Dysk SSD w warstwie Premium
Użyj dysków SSD Premium do plików danych i dzienników dla obciążeń produkcyjnych SQL Server. Operacje we/wy na sekundę i przepustowość SSD Premium różnią się w zależności od rozmiaru i typu dysku.
W przypadku obciążeń produkcyjnych użyj dysków P30 i/lub P40 dla plików danych programu SQL Server, aby zapewnić obsługę buforowania i używać P30 do P80 dla plików dziennika transakcji programu SQL Server. Aby uzyskać najlepszy całkowity koszt posiadania, zacznij od P30s (5000 operacji we/wy na sekundę/200 MB/s) dla plików danych i dzienników, a następnie wybierz tylko wyższe pojemności, gdy musisz kontrolować liczbę dysków maszyny wirtualnej. Dla środowisk deweloperskich/testowych lub małych systemów można wybrać rozmiary mniejsze niż P30, ponieważ obsługują one pamięć podręczną, ale nie oferują one zarezerwowanych cen.
W przypadku obciążeń OLTP dopasuj docelowe IOPS na dysk (lub pulę magazynów) do wymagań wydajnościowych, korzystając z obciążeń w godzinach szczytu i liczników wydajności Disk Reads/sec
+ Disk Writes/sec
. W przypadku obciążeń związanych z magazynem danych i raportowaniem, dopasuj docelową przepływność, używając obciążeń w godzinach szczytu oraz Disk Read Bytes/sec
+ Disk Write Bytes/sec
.
Użyj Storage Spaces, aby osiągnąć optymalną wydajność: skonfiguruj dwie pule, jedną dla plików dziennika i drugą dla plików danych. Jeśli nie używasz paskowania dysków, użyj dwóch dysków SSD Premium powiązanych z oddzielnymi napędami, gdzie jeden napęd zawiera plik dziennika, a drugi dane.
Aprowizowane IOPS i przepustowość na dysk, używane w ramach puli pamięci. Łączne możliwości IOPS i przepustowość dysków są maksymalne do limitu przepustowości maszyny wirtualnej.
Najlepszym rozwiązaniem jest użycie najmniejszej liczby możliwych dysków przy jednoczesnym spełnieniu minimalnych wymagań dotyczących liczby operacji we/wy na sekundę (i przepływności) i pojemności. Jednak równowaga cen i wydajności zwykle jest lepsza z dużą liczbą małych dysków, a nie małą liczbą dużych dysków.
Skalowanie dysków Premium
Rozmiar dysku SSD w warstwie Premium określa początkową warstwę wydajności dysku. Wyznaczyć warstwę wydajności podczas wdrażania lub zmienić ją później bez zmiany rozmiaru dysku. Jeśli zapotrzebowanie wzrośnie, możesz zwiększyć poziom wydajności, aby zaspokoić potrzeby biznesowe.
Zmiana poziomu wydajności umożliwia administratorom przygotowanie się na wyższe zapotrzebowanie i jego zaspokojenie bez konieczności polegania na przyspieszaniu dysku.
Używaj wyższej wydajności tak długo, jak to konieczne, gdzie rozliczenia są zaprojektowane dla poziomu wydajności magazynowania. Uaktualnij warstwę, aby dopasować wymagania dotyczące wydajności bez zwiększania pojemności. Wróć do oryginalnego poziomu, gdy dodatkowa wydajność nie jest już wymagana.
Ta opłacalna i tymczasowa ekspansja wydajności jest silnym przykładem użycia dla specyficznych wydarzeń, takich jak zakupy, testowanie wydajności, szkolenia oraz inne krótkie okazje, gdzie wyższa wydajność jest potrzebna tylko na krótki czas.
Aby uzyskać więcej informacji, zobacz Warstwy wydajności dla dysków zarządzanych.
Dysk w warstwie Ultra platformy Azure
Jeśli istnieje potrzeba czasu odpowiedzi poniżej milisekundy z mniejszym opóźnieniem, rozważ użycie Azure Ultra Disk dla dysku dziennika programu SQL Server, a nawet dysku danych dla aplikacji, które są bardzo wrażliwe na opóźnienia I/O.
Dysk Ultra można skonfigurować tak, aby pojemność i liczba operacji we/wy na sekundę mogły być skalowane niezależnie. Administratorzy dysków ultra mogą przydzielić dysk o wymaganej pojemności, IOPS i przepływności, w zależności od potrzeb aplikacji.
Dysk w warstwie Ultra nie jest obsługiwany we wszystkich seriach maszyn wirtualnych i ma inne ograniczenia, takie jak dostępność w regionach, nadmiarowość i obsługa usługi Azure Backup. Aby dowiedzieć się więcej, zobacz Using Azure ultra disks, aby uzyskać pełną listę ograniczeń.
Dyski twarde HDD i SSD standardowe
Standardowe dyski HDD i dyski SSD mają różne opóźnienia i przepustowość i są zalecane tylko w przypadku obciążeń deweloperskich i testowych. Obciążenia produkcyjne powinny używać dysków Premium SSD v2 lub Premium SSD. Jeśli korzystasz ze Standardowych SSD (scenariusze tworzenia i testowania), zaleca się dodanie maksymalnej liczby dysków danych obsługiwanych przez rozmiar maszyny wirtualnej i użycie przestrajania dysków z Przestrzeni Magazynowych dla najlepszej wydajności.
Cache'owanie
Maszyny wirtualne, które obsługują buforowanie magazynu w warstwie Premium, mogą korzystać z dodatkowej funkcji nazywanej Azure BlobCache lub buforowaniem na hoście, aby rozszerzyć możliwości IOPS i przepustowość maszyny wirtualnej. Maszyny wirtualne włączone zarówno dla przechowywania premium, jak i buforowania premium mają te dwa różne limity przepustowości, które można używać jednocześnie w celu poprawy wydajności przechowywania.
IOPS i MBps bez buforowania są liczone względem limitów przepływności dysku bez buforowania maszyny wirtualnej. Maksymalne buforowane limity zapewniają kolejny bufor dla operacji odczytu, który pomaga sprostać wzrostowi i nieoczekiwanym szczytom.
Włącz buforowanie w warstwie Premium za każdym razem, gdy opcja jest obsługiwana w celu znacznego zwiększenia wydajności operacji odczytu na dysku danych bez dodatkowych kosztów.
Operacje odczytu i zapisu w Azure BlobCache (buforowane IOPS i przepływność) nie są liczone względem niebuforowanych IOPS i limitów przepływności maszyny wirtualnej.
Uwaga
Buforowanie dysków nie jest obsługiwane w przypadku dysków 4 TiB i większych (P50 i większych). Jeśli do maszyny wirtualnej jest dołączonych wiele dysków, każdy dysk mniejszy niż 4 TiB będzie obsługiwać buforowanie. Aby uzyskać więcej informacji, zobacz Buforowanie dysku.
Szybkość niebuforowana
Maksymalna liczba operacji we/wy na sekundę dysku bez buforowania i przepływność to maksymalny limit magazynu zdalnego obsługiwany przez maszynę wirtualną. Ten limit jest definiowany na maszynie wirtualnej i nie jest limitem bazowego magazynu dyskowego. Ten limit dotyczy tylko operacji we/wy względem dysków danych przypisanych zdalnie do maszyny wirtualnej, a nie lokalnych operacji we/wy na dysku tymczasowym (D:\
dysku) lub dysku systemu operacyjnego.
Ilość niebuforowanych IOPS (operacji we/wy na sekundę) i przepustowości dostępnej dla maszyny wirtualnej (VM) można zweryfikować w dokumentacji maszyny wirtualnej.
Na przykład, w dokumentacji serii M pokazano, że maksymalna przepustowość bez buforowania dla maszyny wirtualnej Standard_M8ms wynosi 5000 operacji wejścia/wyjścia na sekundę i 125 MB/s przepustowości dysku bez buforowania.
Podobnie widać, że Standard_M32ts obsługuje 20 000 niebuforowanych operacji we/wy na sekundę dysku i 500 MB/s przepływności dysku bez buforowania. To ograniczenie jest regulowane na poziomie maszyny wirtualnej, niezależnie od bazowego magazynu dysków warstwy Premium.
Aby uzyskać więcej informacji, zobacz limity niebuforowane i buforowane.
Przepływność pamięci buforowanej i tymczasowej
Maksymalny limit przepustowości pamięci podręcznej i tymczasowej jest oddzielnym limitem od limitu przepustowości pamięci niebuforowanej na maszynie wirtualnej. Usługa Azure BlobCache składa się z kombinacji pamięci losowego dostępu hosta maszyny wirtualnej i lokalnie dołączonego dysku SSD. Dysk tymczasowy (D:\
dysk) na maszynie wirtualnej jest również hostowany na tym lokalnym dysku SSD.
Maksymalny limit przepływności pamięci podręcznej i magazynu tymczasowego określa operacje we/wy względem lokalnego dysku tymczasowego (D:\
dysku) i usługi Azure BlobCache tylko wtedy, gdy buforowanie hostów jest włączone.
W przypadku włączenia buforowania na magazynie Premium, maszyny wirtualne mogą być skalowane poza ograniczenia liczby operacji we/wy na sekundę i przepustowości bez buforowania magazynu zdalnego.
Tylko niektóre maszyny wirtualne obsługują zarówno magazyn w warstwie Premium, jak i buforowanie magazynu w warstwie Premium (co należy zweryfikować w dokumentacji maszyn wirtualnych). Na przykład dokumentacja serii M wskazuje, że zarówno pamięć masowa Premium, jak i buforowanie pamięci masowej Premium są obsługiwane.
Limity pamięci podręcznej różnią się w zależności od rozmiaru maszyny wirtualnej. Na przykład maszyna wirtualna Standard_M8ms obsługuje 10000 operacji wejścia/wyjścia na sekundę dla buforowanego dysku i przepustowość 1000 MB/s dla buforowanego dysku przy łącznym rozmiarze pamięci podręcznej wynoszącym 793 GiB. Podobnie maszyna wirtualna Standard_M32ts obsługuje 40000 buforowanych operacji dyskowych IOPS oraz przepustowość buforowanej pamięci dyskowej wynoszącą 400 MB/s, a całkowity rozmiar pamięci podręcznej wynosi 3174 GiB.
Możesz ręcznie włączyć buforowanie hostów na istniejącej maszynie wirtualnej. Zatrzymaj wszystkie obciążenia aplikacji i usługi programu SQL Server przed wprowadzeniem jakichkolwiek zmian w zasadach buforowania maszyny wirtualnej. Zmiana dowolnego ustawienia pamięci podręcznej maszyny wirtualnej powoduje odłączenie dysku docelowego i jego ponowne dołączenie po zastosowaniu ustawień.
Zasady buforowania plików danych
Zasady buforowania przechowywania różnią się w zależności od typu plików danych SQL Server hostowanych na dysku.
Poniższa tabela zawiera podsumowanie zalecanych zasad buforowania na podstawie typu danych programu SQL Server:
Dysk programu SQL Server | Zalecenie |
---|---|
Dysk danych | Włącz Read-only buforowanie dla dysków hostujących pliki danych programu SQL Server.Odczyty z pamięci podręcznej będą szybsze niż odczyty niebuforowane z dysku danych. Niebuforowana liczba operacji we/wy na sekundę i przepustowość oraz buforowana liczba operacji we/wy na sekundę i przepustowość łącznie określają całkowitą możliwą wydajność dostępną z maszyny wirtualnej w ramach jej ograniczeń, ale rzeczywista wydajność różni się w zależności od zdolności obciążenia do wykorzystania pamięci podręcznej (współczynnik trafień pamięci podręcznej). |
Dysk dziennika transakcji | Ustaw zasady buforowania na None dla dysków hostujących dziennik transakcji. Włączenie buforowania dla dysku dziennika transakcji nie przynosi korzyści wydajnościowych. Co więcej, jeśli na dysku dziennika włączono Read-only lub Read/Write buforowanie, może to pogorszyć wydajność zapisów na tym dysku oraz zmniejszyć ilość pamięci podręcznej dostępnej dla odczytów na dysku danych. |
Dysk systemu operacyjnego | Domyślne zasady buforowania dotyczą Read/write dysku systemowego.Nie zaleca się zmiany poziomu buforowania dysku systemu operacyjnego. |
tempdb |
Jeśli tempdb nie można umieścić na dysku D:\ efemerycznym ze względu na pojemność, zmień rozmiar maszyny wirtualnej, aby uzyskać większy efemeryczny dysk lub umieścić tempdb na oddzielnym dysku danych ze Read-only skonfigurowanym buforowaniem.Zarówno pamięć podręczna maszyny wirtualnej, jak i dysk efemeryczny używają lokalnego dysku SSD, dlatego należy pamiętać, że podczas określania rozmiaru I/O za pomocą tempdb , operacje we/wy będą obciążały limity buforowanych IOPS i przepustowości maszyn wirtualnych hostowanych na dysku efemerycznym. |
Ważne
Zmienianie ustawień pamięci podręcznej dysku platformy Azure powoduje odłączenie i ponowne dołączenie dysku docelowego. Podczas zmiany ustawienia pamięci podręcznej dla dysku, który hostuje dane, dziennik lub pliki aplikacji programu SQL Server, pamiętaj, aby zatrzymać usługę PROGRAMU SQL Server wraz z innymi powiązanymi usługami, aby uniknąć uszkodzenia danych.
Aby dowiedzieć się więcej, zobacz Buforowanie dysków.
Rozbieranie dysku
Przeanalizuj przepływność i przepustowość wymaganą dla plików danych SQL, aby określić liczbę dysków danych, w tym plik dziennika i tempdb
. Limity przepływności i przepustowości różnią się w zależności od rozmiaru maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Rozmiary maszyn wirtualnych.
Dodaj więcej dysków danych i użyj usuwania dysków, aby uzyskać większą przepływność. Na przykład aplikacja, która potrzebuje 12 000 operacji we/wy na sekundę i przepływności 180 MB/s, może użyć trzech dysków P30 rozłożonych, aby zapewnić 15 000 operacji we/wy na sekundę i przepływność 600 MB/s.
Aby skonfigurować paskowanie dysków, zobacz paskowanie dysków.
Ograniczenie przepustowości dysku
Istnieją limity przepływności zarówno na poziomie dysku, jak i maszyny wirtualnej. Maksymalne limity IOPS na maszynę wirtualną i na dysk różnią się i są niezależne od siebie.
Aplikacje, które zużywają zasoby wykraczające poza te limity, zostaną przykrócone (co jest również znane jako dławienie). Wybierz maszynę wirtualną i rozmiar dysku w zestawie pasków dyskowych, który spełnia wymagania aplikacji i nie napotka ograniczeń związanych z limitami przepustowości. Aby rozwiązać problem z ograniczaniem, użyj buforowania lub dostosuj aplikację tak, aby była wymagana mniejsza przepustowość.
Na przykład aplikacja, która potrzebuje 12 000 IOPS i 180 MB/s, może:
- Użyj Standard_M32ms, która ma maksymalną przepływność dysku bez buforowania wynoszącą 20 000 operacji we/wy na sekundę i 500 MB/s.
- Połącz trzy dyski P30, aby zapewnić 15 000 operacji we/wy na sekundę i przepływność 600 MB/s.
- Użyj maszyny wirtualnej Standard_M16ms i buforowania hosta, aby korzystać z lokalnej pamięci podręcznej, zamiast zużywać przepustowość.
Maszyny wirtualne skonfigurowane do skalowania w górę w czasie wysokiego wykorzystania powinny zapewnić przestrzeń magazynową z wystarczającą liczbą IOPS i dostateczną przepływnością, aby obsługiwać maksymalny rozmiar maszyny wirtualnej, jednocześnie utrzymując ogólną liczbę dysków mniejszą lub równą maksymalnej liczbie obsługiwanej przez najmniejsze SKU maszyny wirtualnej, która ma być używana.
Aby uzyskać więcej informacji na temat ograniczeń ograniczania dysków i używania buforowania w celu uniknięcia ograniczenia, zobacz Ograniczanie operacji we/wy dysku.
Uwaga
Pewne ograniczenia przepustowości dysku mogą nadal zapewniać zadowalającą wydajność dla użytkowników; warto dostosowywać i utrzymywać obciążenia zamiast zmieniać rozmiar na większą maszynę wirtualną, aby zrównoważyć koszty zarządzania i wydajność dla firmy.
Przyspieszanie zapisu
Przyspieszanie zapisu to funkcja dysku dostępna tylko dla maszyn wirtualnych serii M. Celem przyspieszania zapisu jest zmniejszenie opóźnienia operacji we/wy zapisu w usłudze Azure Premium Storage, gdy wymagane jest jednocyfrowe opóźnienie operacji we/wy ze względu na duże obciążenia OLTP o krytycznym znaczeniu lub środowiska magazynu danych.
Użyj przyspieszania zapisu, aby zwiększyć opóźnienie zapisu na dysku obsługującym pliki dziennika. Nie używaj przyspieszania zapisu dla plików danych programu SQL Server.
Dyski akceleratora zapisu mają ten sam limit IOPS co maszyna wirtualna. Dołączone dyski nie mogą przekraczać limitu IOPS akceleratora zapisu dla maszyny wirtualnej.
W poniższej tabeli przedstawiono liczbę dysków danych i liczbę operacji we/wy na sekundę obsługiwanych na każdą maszynę wirtualną.
Jednostka SKU maszyny wirtualnej | # Dyski akceleratora zapisu | Operacje we/wy zapisu na sekundę przez Write Accelerator dysku na maszynę wirtualną |
---|---|---|
M416ms_v2, M416s_v2 | 16 | 20000 |
M128ms, M128s | 16 | 20000 |
M208ms_v2, M208s_v2 | 8 | 10 000 |
M64ms, M64ls, M64s | 8 | 10 000 |
M32ms, M32ls, M32ts, M32s | 4 | 5000 |
M16ms, M16s | 2 | 2500 |
M8ms, M8s | 1 | 1250 |
Istnieje kilka ograniczeń dotyczących używania przyspieszania zapisu. Aby dowiedzieć się więcej, zobacz Ograniczenia dotyczące korzystania z akceleratora zapisu.
Porównanie z dyskiem Ultra Azure
Największą różnicą między Przyspieszeniem zapisu a dyskami ultra platformy Azure jest to, że Przyspieszenie zapisu jest funkcją maszyn wirtualnych dostępną tylko dla maszyn M-Series, a dyski ultra Azure są opcją magazynu. Akceleracja zapisu to pamięć podręczna zoptymalizowana dla zapisu z własnymi ograniczeniami z uwzględnieniem rozmiaru maszyny wirtualnej. Dyski w warstwie Ultra platformy Azure to opcja magazynu dysków o małych opóźnieniach dla maszyn wirtualnych platformy Azure.
Jeśli to możliwe, użyj przyspieszania zapisu na dyskach w warstwie Ultra dla dysku dziennika transakcji. W przypadku maszyn wirtualnych, które nie obsługują przyspieszania zapisu, ale wymagają niskiego opóźnienia w dzienniku transakcji, użyj dysków Azure Ultra.
Monitorowanie wydajności magazynu
Aby ocenić potrzeby magazynu i określić, jak dobrze działa magazyn, musisz zrozumieć, co należy zmierzyć i jakie wskaźniki oznaczają.
IOPS (operacje wejścia/wyjścia na sekundę) to liczba żądań wysyłanych przez aplikację do pamięci masowej na sekundę. Mierz liczbę operacji we/wy na sekundę za pomocą liczników Disk Reads/sec
i Disk Writes/sec
monitora wydajności.
Aplikacje OLTP (przetwarzanie transakcji online) muszą zwiększyć IOPS, aby osiągnąć optymalną wydajność. Aplikacje takie jak systemy przetwarzania płatności, zakupy online i systemy sprzedaży detalicznej to przykłady aplikacji OLTP.
Przepływność to ilość danych wysyłanych do bazowego magazynu, często mierzona według megabajtów na sekundę. Mierz przepływność za pomocą liczników narzędzia Monitor wydajności Disk Read Bytes/sec
i Disk Write Bytes/sec
.
Magazynowanie danych jest zoptymalizowane pod kątem maksymalizacji przepustowości nad IOPS. Aplikacje takie jak magazyny danych do analizy, raportowania, strumieni roboczych ETL i inne cele analizy biznesowej to przykłady aplikacji do magazynowania danych.
Rozmiary jednostek we/wy wpływają na możliwości operacji we/wy na sekundę i przepływności, ponieważ mniejsze rozmiary operacji we/wy dają większą liczbę operacji we/wy na sekundę, a większe rozmiary operacji we/wy dają większą przepływność. Program SQL Server automatycznie wybiera optymalny rozmiar operacji we/wy. Aby uzyskać więcej informacji, zobacz Optymalizowanie liczby operacji we/wy na sekundę, przepustowości i opóźnień dla aplikacji.
Istnieją konkretne metryki usługi Azure Monitor, które są nieocenione do odkrywania ograniczeń na poziomie maszyny wirtualnej i dysku, a także do sprawdzania zużycia i kondycji pamięci podręcznej Azure Blob. Aby zidentyfikować kluczowe liczniki do dodania do rozwiązania do monitorowania i pulpitu nawigacyjnego portalu Azure, zobacz Metryki użycia magazynu.
Uwaga
Usługa Azure Monitor obecnie nie oferuje metryk na poziomie dysku dla efemerycznego dysku (D:\)
tymczasowego . Procent wykorzystania pamięci podręcznej IOPS maszyny wirtualnej oraz procent wykorzystania przepustowości pamięci podręcznej maszyny wirtualnej odzwierciedlają IOPS i przepustowość zarówno z efemerycznego dysku tymczasowego (D:\)
, jak i z buforowania hosta.
Monitorowanie wzrostu dziennika transakcji
Ponieważ pełny dziennik transakcji może prowadzić do problemów z wydajnością i awarii, ważne jest, aby monitorować dostępne miejsce w dzienniku transakcji, a także używane miejsce na dysku, który przechowuje dziennik transakcji. Rozwiąż problemy z dziennikami transakcji przed ich wpływem na obciążenie.
Przeczytaj Rozwiązywanie problemów z pełnym dziennikiem transakcji, jeśli dziennik stanie się pełny.
Jeśli musisz rozszerzyć dysk, możesz to zrobić w okienku Magazyn zasobu maszyn wirtualnych SQL, jeśli wdrożono obraz programu SQL Server z witryny Azure Marketplace, lub w okienku Dyski dla maszyny wirtualnej platformy Azure oraz samodzielnie zainstalowanym programem SQL Server.
Następne kroki
Aby dowiedzieć się więcej, zobacz inne artykuły z tej serii najlepszych rozwiązań:
Aby uzyskać najlepsze rozwiązania w zakresie zabezpieczeń, zobacz Zagadnienia dotyczące zabezpieczeń programu SQL Server w usłudze Azure Virtual Machines.
Aby uzyskać szczegółowe informacje na temat testowania wydajności programu SQL Server na maszynach wirtualnych platformy Azure z testami porównawczymi TPC-E i TPC_C, zapoznaj się z blogiem Optymalizowanie wydajności OLTP.
Przejrzyj inne artykuły dotyczące maszyny wirtualnej SQL Server w SQL Server on Azure Virtual Machines Overview (Omówienie SQL Server w usłudze Azure Virtual Machines). Jeśli masz pytania dotyczące maszyn wirtualnych programu SQL Server, zobacz Często zadawane pytania.