znaczenie obciążenia usługi Azure Synapse Analytics

W tym artykule wyjaśniono, jak ważność obciążenia może wpływać na kolejność wykonywania dedykowanych żądań puli SQL w Azure Synapse.

Ważność

Potrzeby biznesowe mogą wymagać, aby obciążenia magazynowania danych było ważniejsze niż inne. Rozważmy scenariusz, w którym dane sprzedaży krytyczne dla misji są ładowane przed zamknięciem okresu obrachunkowego. Ładowanie danych dla innych źródeł, takich jak dane pogodowe, nie ma ścisłych umów SLA. Ustawienie wysokiej ważności żądania załadowania danych sprzedaży i niskiej ważności żądania załadowania danych pogodowych gwarantuje, że obciążenie danych sprzedaży uzyska pierwszy dostęp do zasobów i szybciej zakończy się.

Poziomy ważności

Istnieje pięć poziomów ważności: niski, below_normal, normalny, above_normal i wysoki. Żądania, które nie ustawiają ważności, są przypisywane do domyślnego poziomu normalnego. Żądania, które mają ten sam poziom ważności, mają takie samo zachowanie planowania, które istnieje dzisiaj.

Scenariusze dotyczące ważności

Poza podstawowym scenariuszem ważności opisanym powyżej przy użyciu danych dotyczących sprzedaży i pogody istnieją inne scenariusze, w których znaczenie obciążenia pomaga spełnić potrzeby przetwarzania i wykonywania zapytań dotyczących danych.

Blokowanie

Dostęp do blokad dla działań odczytu i zapisu jest jednym z obszarów rywalizacji naturalnej. Działania, takie jak przełączanie partycji lub ZMIANA NAZWY OBIEKTU , wymagają blokad z podwyższonym poziomem uprawnień. Bez znaczenia obciążenia dedykowana pula SQL w Azure Synapse optymalizuje przepływność. Optymalizacja pod kątem przepływności oznacza, że w przypadku uruchamiania i kolejkowania żądań są dostępne te same wymagania dotyczące blokowania i zasobów, żądania w kolejce mogą pomijać żądania z wyższymi potrzebami blokowania, które dotarły wcześniej do kolejki żądań. Po zastosowaniu ważności obciążenia do żądań z wyższymi potrzebami blokowania. Żądanie o wyższym znaczeniu zostanie uruchomione przed żądaniem o niższym znaczeniu.

Rozpatrzmy następujący przykład:

  • Q1 aktywnie działa i wybiera dane z salesFact.
  • Q2 jest w kolejce czekając na zakończenie Q1. Został przesłany o godzinie 9:00 i próbuje przełączyć nowe dane na partycję do salesFact.
  • Q3 jest przesyłana o godzinie 9:01 i chce wybrać dane z salesFact.

Jeśli Q2 i Q3 mają taką samą ważność, a Q1 nadal wykonuje, Q3 rozpocznie wykonywanie. Q2 będzie nadal czekać na wyłączną blokadę w salesFact. Jeśli Q2 ma większą ważność niż Q3, Q3 będzie czekać na zakończenie Q2 przed rozpoczęciem wykonywania.

Żądania inne niż jednolite

Innym scenariuszem, w którym znaczenie może pomóc spełnić wymagania dotyczące zapytań, jest to, że żądania z różnymi klasami zasobów są przesyłane. Jak wspomniano wcześniej, w ramach tej samej ważności dedykowana pula SQL w Azure Synapse optymalizuje przepływność. Gdy są kolejkowane żądania o mieszanym rozmiarze (np. smallrc lub mediumrc), dedykowana pula SQL wybierze najwcześniejsze przychodzące żądanie, które mieści się w dostępnych zasobach. Jeśli ważność obciążenia jest stosowana, zaplanowane jest następne żądanie o najwyższym znaczeniu.

Rozważmy następujący przykład na dw500c:

  • Q1, Q2, Q3 i Q4 uruchamiają zapytania smallrc.
  • Q5 jest przesyłany z klasy zasobów mediumrc o godzinie 9:00.
  • Q6 jest przesyłany z małą klasą zasobów o godzinie 9:01.

Ponieważ Q5 jest mediumrc, wymaga dwóch gniazd współbieżności. Q5 musi poczekać na ukończenie dwóch uruchomionych zapytań. Jednak po zakończeniu jednego z uruchomionych zapytań (Q1-Q4) Q6 jest zaplanowane natychmiast, ponieważ zasoby istnieją do wykonania zapytania. Jeśli Q5 ma wyższą ważność niż Q6, Q6 czeka na uruchomienie Q5 przed rozpoczęciem wykonywania.

Następne kroki