Klasyfikacja obciążeń dla dedykowanej puli SQL w usłudze Azure Synapse Analytics

W tym artykule opisano proces klasyfikacji obciążeń przypisywania grupy obciążeń i ważności do żądań przychodzących z dedykowanymi pulami SQL w Azure Synapse.

Klasyfikacja

Klasyfikacja zarządzania obciążeniami umożliwia stosowanie zasad obciążeń do żądań za pomocą przypisywania klas zasobów i ważności.

Chociaż istnieje wiele sposobów klasyfikowania obciążeń magazynowania danych, najprostszą i najczęstszą klasyfikacją jest ładowanie i wykonywanie zapytań. Dane są ładowane za pomocą instrukcji wstawiania, aktualizowania i usuwania. Wykonujesz zapytania dotyczące danych przy użyciu wybranych opcji. Rozwiązanie do magazynowania danych często będzie miało zasady obciążenia dla działania obciążenia, takie jak przypisywanie wyższej klasy zasobów z większą ilością zasobów. Inne zasady obciążenia mogą dotyczyć zapytań, takich jak mniejsze znaczenie w porównaniu z działaniami ładowania.

Możesz również podklasyfikować obciążenia obciążenia i wykonywać zapytania. Podklasyfikacja zapewnia większą kontrolę nad obciążeniami. Na przykład obciążenia zapytań mogą składać się z odświeżeń modułów, zapytań pulpitu nawigacyjnego lub zapytań ad hoc. Każde z tych obciążeń zapytań można sklasyfikować przy użyciu różnych klas zasobów lub ustawień ważności. Obciążenie może również korzystać z podklasyfikacji. Duże przekształcenia można przypisać do większych klas zasobów. Większe znaczenie może służyć do zapewnienia, że kluczowe dane sprzedaży są ładowane przed danymi pogodowymi lub źródłem danych społecznościowych.

Nie wszystkie instrukcje są klasyfikowane, ponieważ nie wymagają zasobów lub wymagają znaczenia, aby wpływać na wykonywanie. Polecenia DBCC, BEGIN, COMMIT i ROLLBACK TRANSAKCJi nie są klasyfikowane.

Proces klasyfikacji

Klasyfikacja dedykowanej puli SQL jest obecnie osiągana przez przypisanie użytkowników do roli, która ma przypisaną do niej odpowiednią klasę zasobów przy użyciu sp_addrolemember. Możliwość scharakteryzowania żądań poza logowaniem do klasy zasobów jest ograniczona dzięki tej możliwości. Bogatsza metoda klasyfikacji jest teraz dostępna za pomocą składni CREATE WORKLOAD CLASSIFIER . Dzięki tej składni dedykowani użytkownicy puli SQL mogą przypisywać znaczenie i ilość zasobów systemowych przypisanych do żądania za pośrednictwem parametru workload_group .

Wagi klasyfikacji

W ramach procesu klasyfikacji wagę jest obowiązuje w celu określenia, która grupa obciążeń jest przypisana. Waga jest następująca:

Parametr klasyfikatora Waga
MEMBERNAME:USER 64
MEMBERNAME:ROLE 32
WLM_LABEL 16
WLM_CONTEXT 8
START_TIME/END_TIME 4

Parametr membername jest obowiązkowy. Jeśli jednak określona nazwa_elementu członkowskiego jest użytkownikiem bazy danych zamiast roli bazy danych, waga użytkownika jest wyższa i dlatego jest wybierany klasyfikator.

Jeśli użytkownik jest członkiem wielu ról z różnymi klasami zasobów przypisanymi lub dopasowanymi w wielu klasyfikatorach, użytkownik otrzymuje najwyższe przypisanie klasy zasobów. To zachowanie jest spójne z istniejącym zachowaniem przypisywania klas zasobów.

Uwaga

Klasyfikowanie zachowań tożsamości zarządzanych różni się między dedykowaną pulą SQL w obszarach roboczych Azure Synapse a autonomiczną dedykowaną pulą SQL (dawniej SQL DW). Podczas gdy autonomiczna dedykowana pula SQL MI utrzymuje przypisaną tożsamość, w przypadku obszarów roboczych Azure Synapse wystąpienie jest uruchamiane jako dbo. Tego nie można zmienić. Rola dbo domyślnie jest klasyfikowana na smallrc. Utworzenie klasyfikatora dla roli dbo umożliwia przypisywanie żądań do grupy obciążeń innej niż smallrc. Jeśli sam dbo jest zbyt ogólny dla klasyfikacji i ma szerszy wpływ, rozważ użycie etykiety, sesji lub klasyfikacji czasowej w połączeniu z klasyfikacją roli dbo.

Klasyfikatory systemowe

Klasyfikacja obciążeń ma klasyfikatory obciążeń systemowych. Klasyfikatory systemowe mapuje istniejące członkostwa w rolach klas zasobów na alokacje zasobów klasy zasobów o normalnym znaczeniu. Nie można porzucić klasyfikatorów systemu. Aby wyświetlić klasyfikatory systemu, możesz uruchomić poniższe zapytanie:

SELECT * FROM sys.workload_management_workload_classifiers where classifier_id <= 12

Mieszanie przypisań klas zasobów z klasyfikatorami

Klasyfikatory systemowe utworzone w Twoim imieniu zapewniają łatwą ścieżkę do migracji do klasyfikacji obciążeń. Użycie mapowań ról klasy zasobów z pierwszeństwem klasyfikacji może prowadzić do błędnej klasyfikacji podczas tworzenia nowych klasyfikatorów o znaczeniu.

Poniżej przedstawiono przykładowy scenariusz:

  • Istniejący magazyn danych ma użytkownika bazy danych DBAUser przypisanego do większej roli klasy zasobów. Przypisanie klasy zasobów zostało wykonane przy użyciu sp_addrolemember.
  • Magazyn danych jest teraz aktualizowany przy użyciu zarządzania obciążeniami.
  • Aby przetestować nową składnię klasyfikacji, rola bazy danych DBARole (która DBAUser jest członkiem), ma utworzony klasyfikator mapowania ich na mediumrc i wysoką ważność.
  • Gdy administrator bazy danych loguje się i uruchamia zapytanie, zapytanie zostanie przypisane do większego rozmiaru. Ponieważ użytkownik ma pierwszeństwo przed członkostwem w roli.

Aby uprościć rozwiązywanie problemów z błędną klasyfikacją, zalecamy usunięcie mapowań ról klasy zasobów podczas tworzenia klasyfikatorów obciążeń. Poniższy kod zwraca istniejące członkostwa w rolach klas zasobów. Uruchom sp_droprolemember dla każdej nazwy elementu członkowskiego zwróconej z odpowiedniej klasy zasobów.

SELECT  r.name AS [Resource Class]
,       m.name AS membername
FROM    sys.database_role_members rm
JOIN    sys.database_principals AS r ON rm.role_principal_id = r.principal_id
JOIN    sys.database_principals AS m ON rm.member_principal_id = m.principal_id
WHERE   r.name IN ('mediumrc','largerc','xlargerc','staticrc10','staticrc20','staticrc30','staticrc40','staticrc50','staticrc60','staticrc70','staticrc80');
--for each row returned run in the previous query
EXEC sp_droprolemember '[Resource Class]', membername;

Następne kroki