Użycie zasobów usługi Synapse SQL

W tym artykule opisano modele użycia zasobów w usłudze Synapse SQL.

Bezserwerowa pula SQL

Bezserwerowa pula SQL to usługa płatności za usługę zapytań, która nie wymaga wybrania odpowiedniego rozmiaru. System dostosowuje go automatycznie na podstawie wymagań, uwalniając Cię od konieczności zarządzania infrastrukturą i wybierania odpowiedniego rozmiaru dla danego rozwiązania.

Dedykowana pula SQL — jednostki Data Warehouse (DWU) i jednostki Data Warehouse obliczeniowe (cDWU)

Zalecenia dotyczące wybierania idealnej liczby jednostek magazynu danych (DWU) w celu optymalizacji cen i wydajności oraz sposobu zmiany liczby jednostek.

Jednostki magazynu danych

Pula SQL usługi Synapse reprezentuje kolekcję aprowizowanych zasobów analitycznych. Zasoby analityczne są definiowane jako kombinacja procesora CPU, pamięci i operacji we/wy. Te trzy zasoby są połączone w jednostki skalowania zasobów obliczeniowych o nazwie Data Warehouse Units (DWU). Jednostka DWU to abstrakcyjna, znormalizowana miara zasobów obliczeniowych i wydajności. Zmiana poziomu usługi zmienia liczbę jednostek DWU dostępnych dla systemu. Z kolei ta zmiana dostosowuje wydajność i koszt systemu.

W celu zwiększenia wydajności można zwiększyć liczbę jednostek magazynu danych. Aby zmniejszyć wydajność, zmniejsz liczbę jednostek magazynu danych. Koszty magazynu i mocy obliczeniowej są rozliczane osobno, więc zmiana liczby jednostek magazynu danych nie ma wpływu na koszty magazynu.

Wydajność jednostek magazynu danych jest oparta na następujących metrykach obciążenia magazynu danych:

  • Szybkość standardowego zapytania magazynowania danych umożliwia skanowanie dużej liczby wierszy, a następnie wykonywanie złożonej agregacji. Ta operacja wymaga dużej ilości operacji we/wy i procesora CPU.
  • Jak szybko magazyn danych może pozyskiwać dane z obiektów blob usługi Azure Storage lub usługi Azure Data Lake. Ta operacja jest intensywnie obciążana przez sieć i procesor CPU.
  • Jak szybko CREATE TABLE AS SELECT polecenie T-SQL może skopiować tabelę. Ta operacja obejmuje odczytywanie danych z magazynu, dystrybucję ich między węzłami urządzenia i ponowne zapisywanie w magazynie. Ta operacja jest intensywnie obciążana procesorem CPU, operacjami we/wy i siecią.

Zwiększenie liczby jednostek DWU:

  • Liniowo zmienia wydajność systemu na potrzeby skanowania, agregacji i instrukcji CTAS
  • Zwiększa liczbę czytników i składników zapisywania dla operacji ładowania technologii PolyBase
  • Zwiększa maksymalną liczbę współbieżnych zapytań i gniazd współbieżności.

Cel poziomu usług

Cel poziomu usług (SLO) to ustawienie skalowalności, które określa koszt i poziom wydajności magazynu danych. Poziomy usług dla generacji 2 są mierzone w jednostkach magazynu danych obliczeniowych (cDWU), na przykład DW2000c. Poziomy usług Gen1 są mierzone w jednostkach DWU, na przykład DW2000.

Cel poziomu usług (SLO) to ustawienie skalowalności, które określa koszt i poziom wydajności magazynu danych. Poziomy usług dla dedykowanej puli SQL gen2 są mierzone w jednostkach magazynu danych (DWU), na przykład DW2000c.

Uwaga

Azure Synapse Analytics Gen2 niedawno dodano dodatkowe możliwości skalowania, aby obsługiwać warstwy obliczeniowe nawet 100 cDWU. Istniejące magazyny danych obecnie w usłudze Gen1, które wymagają niższych warstw obliczeniowych, można teraz uaktualnić do wersji Gen2 w regionach, które są obecnie dostępne bez dodatkowych kosztów. Jeśli region nie jest jeszcze obsługiwany, nadal możesz przeprowadzić uaktualnienie do obsługiwanego regionu. Aby uzyskać więcej informacji, zobacz Uaktualnianie do wersji Gen2.

W języku T-SQL ustawienie SERVICE_OBJECTIVE określa poziom usługi i warstwę wydajności dedykowanej puli SQL.

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

Warstwy wydajności i jednostki Data Warehouse

Każda warstwa wydajności używa nieco innej jednostki miary dla jednostek magazynu danych. Ta różnica jest odzwierciedlana na fakturze, ponieważ jednostka skalowania bezpośrednio przekłada się na rozliczenia.

  • Magazyny danych 1. generacji są mierzone w jednostkach Data Warehouse (DWU).
  • Magazyny danych gen2 są mierzone w jednostkach obliczeniowych Data Warehouse Units (cDWU).

Jednostki DWU i cDWU obsługują skalowanie zasobów obliczeniowych w górę lub w dół oraz wstrzymując zasoby obliczeniowe, gdy nie trzeba używać magazynu danych. Te operacje są wykonywane na żądanie. Usługa Gen2 używa lokalnej pamięci podręcznej opartej na dysku na węzłach obliczeniowych, aby zwiększyć wydajność. Podczas skalowania lub wstrzymywania systemu pamięć podręczna jest unieważniana i dlatego przed osiągnięciem optymalnej wydajności wymagana jest okres ocieplenia pamięci podręcznej.

W miarę zwiększania liczby jednostek magazynu danych zwiększasz liniowo zasoby obliczeniowe. Gen2 zapewnia najlepszą wydajność zapytań i najwyższą skalę. Systemy Gen2 również najbardziej wykorzystują pamięć podręczną.

Limity pojemności

Każdy serwer SQL (na przykład myserver.database.windows.net) ma limit przydziału jednostki transakcji bazy danych (DTU), który umożliwia określoną liczbę jednostek magazynu danych. Aby uzyskać więcej informacji, zobacz limity pojemności zarządzania obciążeniami.

Ocena liczby potrzebnych jednostek magazynu danych

Idealna liczba jednostek magazynu danych zależy bardzo od obciążenia i ilości danych załadowanych do systemu.

Procedura znajdowania najlepszych jednostek DWU dla obciążenia:

  1. Zacznij od wybrania mniejszej jednostek DWU.
  2. Monitoruj wydajność aplikacji podczas testowania ładowania danych do systemu, obserwując liczbę wybranych jednostek DWU w porównaniu z obserwowaną wydajnością.
  3. Zidentyfikuj wszelkie dodatkowe wymagania dotyczące okresowych okresów szczytowej aktywności. Obciążenia, które pokazują znaczne szczyty i koryta w działaniu, mogą wymagać częstego skalowania.

Pula SQL to system skalowania w poziomie, który może aprowizować ogromne ilości zasobów obliczeniowych i wysyłać zapytania o znaczne ilości danych. Aby zobaczyć swoje prawdziwe możliwości skalowania, szczególnie w przypadku większych jednostek DWU, zalecamy skalowanie zestawu danych podczas skalowania, aby upewnić się, że masz wystarczającą ilość danych do źródła procesorów CPU. W przypadku testowania skalowania zalecamy użycie co najmniej 1 TB.

Uwaga

Wydajność zapytań zwiększa się tylko w przypadku zwiększenia równoległego przetwarzania danych, jeśli praca może zostać podzielona między węzły obliczeniowe. Jeśli okaże się, że skalowanie nie zmienia wydajności, może być konieczne dostosowanie projektu tabeli i/lub zapytań. Aby uzyskać wskazówki dotyczące dostrajania zapytań, zobacz Zarządzanie zapytaniami użytkowników.

Uprawnienia

Zmiana jednostek magazynu danych wymaga uprawnień opisanych w artykule ALTER DATABASE.

Wbudowane role platformy Azure, takie jak współautor usługi SQL DB i współautor SQL Server, mogą zmieniać ustawienia jednostek DWU.

Wyświetlanie bieżących ustawień jednostek DWU

Aby wyświetlić bieżące ustawienie jednostek DWU:

  1. Otwórz SQL Server Eksplorator obiektów w programie Visual Studio.
  2. Połącz się z bazą danych master skojarzona z logicznym serwerem SQL.
  3. Wybierz widok dynamicznego zarządzania sys.database_service_objectives. Oto przykład:
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

Zmienianie jednostek magazynu danych

Azure Portal

Aby zmienić jednostki DWU:

  1. Otwórz Azure Portal, otwórz bazę danych i wybierz pozycję Skaluj.

  2. W obszarze Skalowanie przesuń suwak w lewo lub w prawo, aby zmienić ustawienie jednostek DWU.

  3. Wybierz pozycję Zapisz. Zostanie wyświetlony komunikat z potwierdzeniem. Wybierz pozycję Tak , aby potwierdzić lub nie , aby anulować.

PowerShell

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Aby zmienić jednostki DWU, użyj polecenia cmdlet Set-AzSqlDatabase programu PowerShell. W poniższym przykładzie ustawiono cel poziomu usługi na DW1000 dla bazy danych MySQLDW hostowanej na serwerze MyServer.

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

Aby uzyskać więcej informacji, zobacz Polecenia cmdlet programu PowerShell dla usługi Azure Synapse Analytics

T-SQL

Za pomocą języka T-SQL można wyświetlić bieżące ustawienia DWUsettings, zmienić ustawienia i sprawdzić postęp.

Aby zmienić jednostki DWU:

  1. Połącz się z bazą danych master skojarzona z serwerem.
  2. Użyj instrukcji TSQL ALTER DATABASE . Poniższy przykład ustawia cel poziomu usług na DW1000c dla bazy danych MySQLDW.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

Interfejsy API REST

Aby zmienić jednostki DWU, użyj interfejsu API REST tworzenia lub aktualizowania bazy danych . Poniższy przykład ustawia cel poziomu usługi na DW1000c dla bazy danych MySQLDW, która jest hostowana na serwerze MyServer. Serwer znajduje się w grupie zasobów platformy Azure o nazwie ResourceGroup1.

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": DW1000
    }
}

Aby uzyskać więcej przykładów interfejsu API REST, zobacz interfejsy API REST dla usługi Azure Synapse Analytics.

Sprawdzanie stanu zmian DWU

Ukończenie zmian DWU może potrwać kilka minut. Jeśli skalowanie odbywa się automatycznie, rozważ zaimplementowanie logiki, aby upewnić się, że niektóre operacje zostały ukończone przed kontynuowaniem innej akcji.

Sprawdzanie stanu bazy danych za pomocą różnych punktów końcowych umożliwia poprawne implementowanie automatyzacji. Portal udostępnia powiadomienie po zakończeniu operacji i bieżącego stanu baz danych, ale nie zezwala na programowe sprawdzanie stanu.

Nie można sprawdzić stanu bazy danych pod kątem operacji skalowania w poziomie przy użyciu Azure Portal.

Aby sprawdzić stan zmian DWU:

  1. Połącz się z bazą danych master skojarzona z serwerem.
  2. Prześlij następujące zapytanie, aby sprawdzić stan bazy danych.
SELECT    *
FROM      sys.databases
;
  1. Prześlij następujące zapytanie, aby sprawdzić stan operacji
SELECT    *
FROM      sys.dm_operation_status
WHERE     resource_type_desc = 'Database'
AND       major_resource_id = 'MySQLDW'
;

Ten dynamiczny widok zarządzania zwraca informacje o różnych operacjach zarządzania w dedykowanej puli SQL, takich jak operacja i stan operacji, czyli IN_PROGRESS lub UKOŃCZONo.

Przepływ pracy skalowania

Po uruchomieniu operacji skalowania system najpierw zabija wszystkie otwarte sesje, cofnie wszystkie otwarte transakcje, aby zapewnić spójny stan. W przypadku operacji skalowania skalowanie odbywa się tylko po zakończeniu wycofywania transakcyjnego.

  • W przypadku operacji skalowania w górę system odłącza wszystkie węzły obliczeniowe, aprowizuje dodatkowe węzły obliczeniowe, a następnie ponownie dołącza do warstwy magazynu.
  • W przypadku operacji skalowania w dół system odłącza wszystkie węzły obliczeniowe, a następnie ponownie dołącza tylko wymagane węzły do warstwy magazynu.

Następne kroki

Aby dowiedzieć się więcej na temat zarządzania wydajnością, zobacz Klasy zasobów dotyczące zarządzania obciążeniamioraz Limity pamięci i współbieżności.