Zarządzanie zasobami obliczeniowymi dla dedykowanej puli SQL
W tym artykule wyjaśniono, jak zarządzać zasobami obliczeniowymi dla dedykowanej puli SQL (dawniej SQL DW) w usłudze Azure Synapse Analytics. Możesz obniżyć koszty, wstrzymując dedykowaną pulę SQL lub skalując dedykowaną pulę SQL w celu spełnienia wymagań dotyczących wydajności.
Co to jest zarządzanie obliczeniami?
Architektura dedykowanej puli SQL oddziela magazyn i zasoby obliczeniowe, umożliwiając niezależne skalowanie obu elementów. W rezultacie można skalować zasoby obliczeniowe w celu spełnienia wymagań związanych z wydajnością niezależnie od magazynu danych. Można również wstrzymywać i wznawiać działanie zasobów obliczeniowych.
Naturalną konsekwencją tej architektury jest to, że ceny zasobów obliczeniowych i magazynu są oddzielne. Jeśli przez pewien czas nie musisz używać dedykowanej puli SQL, możesz zaoszczędzić na kosztach zasobów obliczeniowych, wstrzymując obliczenia.
Skalowanie zasobów obliczeniowych
Możesz skalować w poziomie lub skalować w poziomie zasoby obliczeniowe, dostosowując ustawienie jednostek magazynu danych (DWU) dla dedykowanej puli SQL. Wydajność ładowania i zapytań może wzrosnąć liniowo w miarę dodawania większej liczby jednostek DWU.
Aby uzyskać instrukcje skalowania w poziomie, zobacz przewodniki Szybki start dotyczące witryny Azure Portal, programu PowerShell lub języka T-SQL. Operacje skalowania w poziomie można również wykonywać przy użyciu interfejsu API REST.
Aby wykonać operację skalowania, dedykowana pula SQL najpierw zabija wszystkie przychodzące zapytania, a następnie cofa transakcje w celu zapewnienia spójnego stanu. Skalowanie jest realizowane dopiero po ukończeniu wycofywania transakcji. W przypadku operacji skalowania system odłącza warstwę magazynu od węzłów obliczeniowych, dodaje węzły obliczeniowe, a następnie ponownie dołącza warstwę magazynu do warstwy obliczeniowej.
Każda dedykowana pula SQL jest przechowywana jako 60 dystrybucji, które są równomiernie dystrybuowane do węzłów obliczeniowych. Dodanie większej liczby węzłów obliczeniowych zwiększa moc obliczeniową. Wraz ze wzrostem liczby węzłów obliczeniowych liczba dystrybucji na węzeł obliczeniowy zmniejsza się, zapewniając większą moc obliczeniową zapytań. Podobnie zmniejszenie liczby jednostek DWU zmniejsza liczbę węzłów obliczeniowych, co zmniejsza ilość zasobów obliczeniowych dla zapytań.
W poniższej tabeli pokazano, jak zmienia się liczba dystrybucji na węzeł obliczeniowy w miarę zmiany jednostek DWU. DW30000c zapewnia 60 węzłów obliczeniowych i osiąga znacznie wyższą wydajność zapytań niż DW100c.
Jednostki magazynu danych | Liczba węzłów obliczeniowych | Liczba dystrybucji na węzeł |
---|---|---|
DW100c | 1 | 60 |
DW200c | 1 | 60 |
DW300c | 1 | 60 |
DW400c | 1 | 60 |
DW500c. | 1 | 60 |
DW1000c | 2 | 30 |
DW1500c | 3 | 20 |
DW2000c | 100 | 15 |
DW2500c | 5 | 12 |
DW3000c | 6 | 10 |
DW5000c | 10 | 6 |
DW6000c | 12 | 5 |
DW7500c | 15 | 100 |
DW10000c | 20 | 3 |
DW15000c | 30 | 2 |
DW30000c | 60 | 1 |
Znajdowanie odpowiedniego rozmiaru jednostek magazynu danych
Aby zobaczyć korzyści z wydajności skalowania w poziomie, szczególnie w przypadku większych jednostek magazynu danych, chcesz użyć co najmniej zestawu danych o rozmiarze 1 TB. Aby znaleźć najlepszą liczbę jednostek DWU dla dedykowanej puli SQL, spróbuj przeprowadzić skalowanie w górę i w dół. Uruchom kilka zapytań z różnymi liczbami jednostek DWU po załadowaniu danych. Ponieważ skalowanie jest szybkie, możesz wypróbować różne poziomy wydajności w ciągu godziny lub mniej.
Zalecenia dotyczące znajdowania najlepszej liczby jednostek DWU:
- W przypadku dedykowanej puli SQL w programowania rozpocznij od wybrania mniejszej liczby jednostek DWU. Dobrym punktem wyjścia jest DW400c lub DW200c.
- Monitoruj wydajność aplikacji, obserwując liczbę wybranych jednostek DWU w porównaniu z obserwowaną wydajnością.
- Załóżmy, że skala liniowa i określ, ile trzeba zwiększyć lub zmniejszyć liczbę jednostek DWU.
- Kontynuuj wprowadzanie korekt, dopóki nie osiągniesz optymalnego poziomu wydajności dla wymagań biznesowych.
Kiedy należy skalować w poziomie
Skalowanie jednostek DWU wyprzedaje ma wpływ na następujące aspekty wydajności:
- Liniowo poprawia wydajność systemu na potrzeby skanowania, agregacji i instrukcji CTAS
- Zwiększa liczbę czytników i składników zapisywania na potrzeby ładowania danych
- Maksymalna liczba współbieżnych zapytań i gniazd współbieżności
Zalecenia dotyczące skalowania jednostek DWU w poziomie:
- Przed wykonaniem dużej ilości operacji ładowania lub przekształcania danych przeprowadź skalowanie w poziomie, aby umożliwić szybsze udostępnianie danych.
- W godzinach szczytu pracy przeprowadź skalowanie w poziomie, aby obsłużyć większą liczbę współbieżnych zapytań.
Co zrobić, jeśli skalowanie w górę nie poprawi wydajności?
Dodanie jednostek DWU zwiększa równoległość. Jeśli praca jest równomiernie podzielona między węzły obliczeniowe, dodatkowa równoległość zwiększa wydajność zapytań. Jeśli skalowanie w górę nie zmienia wydajności, istnieje kilka powodów, dla których może się to zdarzyć. Dane mogą być niesymetryczne w różnych dystrybucjach lub zapytania mogą wprowadzać dużą ilość przenoszenia danych. Aby zbadać problemy z wydajnością zapytań, zobacz Rozwiązywanie problemów z wydajnością.
Wstrzymywanie i wznawianie obliczeń
Wstrzymanie obliczeń powoduje odłączenie warstwy magazynu od węzłów obliczeniowych. Zasoby obliczeniowe są zwalniane z konta. Opłaty za zasoby obliczeniowe nie są naliczane podczas wstrzymania obliczeń. Wznawianie ponownego dołączania magazynu do węzłów obliczeniowych i wznawia naliczanie opłat za zasoby obliczeniowe.
W przypadku wstrzymania dedykowanej puli SQL:
- Zasoby obliczeniowe i zasoby pamięci są zwracane do puli dostępnych zasobów w centrum danych.
- Koszty jednostek magazynu danych są zerowe podczas wstrzymania.
- Nie ma to wpływu na magazyn danych, a dane pozostają nienaruszone.
- Wszystkie uruchomione lub w kolejce operacje są anulowane.
- Liczniki dmV są resetowane.
Po wznowieniu dedykowanej puli SQL:
- Dedykowana pula SQL uzyskuje zasoby obliczeniowe i zasoby pamięci dla ustawienia jednostek DWU.
- Opłaty za zasoby obliczeniowe dla jednostek DWU są wznawiane.
- Twoje dane staną się dostępne.
- Po przejściu dedykowanej puli SQL do trybu online należy ponownie uruchomić zapytania obciążenia.
Jeśli zawsze chcesz, aby dedykowana pula SQL była dostępna, rozważ skalowanie jej w dół do najmniejszego rozmiaru, a nie wstrzymania.
Aby zapoznać się z krokami wstrzymywania i wznawiania, zobacz przewodniki Szybki start dotyczące witryny Azure Portal lub programu PowerShell. Możesz również użyć interfejsu API REST wstrzymywania lub interfejsu API REST wznawiania.
Opróżnianie transakcji przed wstrzymywaniem i skalowaniem
Zalecamy, aby poczekać na zakończenie istniejących transakcji przed zainicjowaniem operacji wstrzymania lub skalowania.
W przypadku wstrzymania lub skalowania dedykowanej puli SQL zapytania są anulowane w tle po zainicjowaniu żądania wstrzymania lub skalowania. Anulowanie prostego zapytania SELECT jest szybką operacją i prawie nie ma wpływu na czas potrzebny do wstrzymania lub skalowania wystąpienia. Jednak zapytania transakcyjne, które modyfikują dane lub strukturę danych, mogą nie być w stanie szybko zatrzymać. Zapytania transakcyjne należy z założenia wykonać w całości lub wycofać ich zmiany.
Całkowite cofnięcie wyników działania zapytania transakcyjnego może trwać równie długo lub nawet dłużej niż pierwotna zmiana wprowadzona przez zapytanie. Jeśli na przykład anulujesz zapytanie, które usuwało wiersze i zostało już uruchomione przez godzinę, może upłynąć godzinę, zanim system wstawi usunięte wiersze. Jeśli uruchamiasz wstrzymanie lub skalowanie, gdy transakcje są w locie, wstrzymanie lub skalowanie może zająć dużo czasu, ponieważ wstrzymywanie i skalowanie musi czekać na zakończenie wycofywania, zanim będzie można kontynuować.
Aby uzyskać więcej informacji, zobacz Używanie transakcji i Optymalizowanie transakcji.
Automatyzowanie zarządzania obliczeniami
Aby zautomatyzować operacje zarządzania obliczeniami, zobacz Zarządzanie zasobami obliczeniowymi dla dedykowanej puli SQL przy użyciu usługi Azure Functions.
Wykonanie każdej operacji zwiększania skali w poziomie, wstrzymywania i wznawiania może potrwać kilka minut. Jeśli skalowanie, wstrzymanie lub wznawianie jest wykonywane automatycznie, zalecamy zaimplementowanie logiki, aby upewnić się, że niektóre operacje zostały ukończone przed kontynuowaniem innej akcji. Sprawdzanie stanu dedykowanej puli SQL za pomocą różnych punktów końcowych umożliwia poprawne zaimplementowanie automatyzacji takich operacji.
Aby sprawdzić stan dedykowanej puli SQL, zobacz przewodniki Szybki start dotyczące programu PowerShell lub języka T-SQL. Możesz również sprawdzić stan dedykowanej puli SQL przy użyciu interfejsu API REST.
Uprawnienia
Skalowanie dedykowanej puli SQL wymaga uprawnień opisanych w artykule ALTER DATABASE. Wstrzymywanie i wznawianie wymaga roli Współautor bazy danych SQL, w szczególności Microsoft.Sql/servers/databases/action.