Jednostki magazynu danych (DWU) dla dedykowanej puli SQL (dawniej SQL DW) w usłudze Azure Synapse Analytics

Ten dokument zawiera zalecenia dotyczące wybierania idealnej liczby jednostek magazynu danych (DWU) dla dedykowanej puli SQL (dawniej SQL DW), aby zoptymalizować cenę i wydajność oraz jak zmienić liczbę jednostek.

Co to są jednostki magazynu danych

Dedykowana pula SQL (dawniej SQL DW) 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 skali obliczeniowej o nazwie Jednostki magazynu danych (DWU). Jednostka DWU to abstrakcyjna, znormalizowana miara zasobów obliczeniowych i wydajności.

Zmiana poziomu usługi zmienia liczbę jednostek DWU, które są dostępne dla systemu, co z kolei dostosowuje wydajność i koszt systemu.

W celu zwiększenia wydajności można zwiększyć liczbę jednostek magazynu danych. Aby uzyskać mniejszą 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:

  • Jak szybko standardowe zapytanie dedykowanej puli SQL (dawniej SQL DW) może skanować dużą liczbę wierszy, a następnie wykonywać złożone agregacje. Ta operacja wymaga dużej ilości operacji we/wy i procesora CPU.
  • Jak szybko dedykowana pula SQL (dawniej SQL DW) 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ły urządzenia i ponowne zapisywanie w magazynie. Ta operacja jest intensywnie obciążana procesorem CPU, operacjami we/wy i siecią.

Zwiększanie 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 dedykowanej puli SQL (dawniej SQL DW). Poziomy usług dla dedykowanej puli SQL Gen2 (dawniej SQL DW) są mierzone w jednostkach magazynu danych (DWU), na przykład DW2000c.

Uwaga

Dedykowana pula SQL (dawniej SQL DW) Gen2 dodała ostatnio dodatkowe możliwości skalowania w celu obsługi warstw obliczeniowych nawet dw100c. Istniejące magazyny danych obecnie w usłudze Gen1, które wymagają niższych warstw obliczeniowych, mogą teraz przejść 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 uaktualnić go 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 (dawniej SQL DW).

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

Warstwy wydajności i jednostki magazynu danych

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 Gen1 są mierzone w jednostkach magazynu danych (DWU).
  • Magazyny danych gen2 są mierzone w jednostkach magazynu danych obliczeniowych (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żniona, dlatego przed osiągnięciem optymalnej wydajności wymagana jest okres ocieplenia pamięci podręcznej.

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 wydajności zarządzania obciążeniami.

Ile jednostek magazynu danych potrzebuję

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ą. Zweryfikuj, monitorując wykorzystanie zasobów.

  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ą być często skalowane.

Dedykowana pula SQL (dawniej SQL DW) to system skalowalny w poziomie, który może aprowizować ogromne ilości zasobów obliczeniowych i ilości danych o rozmiarze zapytań.

Aby zobaczyć 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. W przypadku testowania skalowania zalecamy użycie co najmniej 1 TB.

Uwaga

Wydajność zapytań zwiększa się tylko z większą równoległacją, 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 bazy danych SQL i współautor programu 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 Eksplorator obiektów programu SQL Server w programie Visual Studio.
  2. Połączenie do głównej bazy danych skojarzonej z logicznym serwerem SQL.
  3. Wybierz z widoku 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 witrynę Azure Portal, otwórz bazę danych i kliknij pozycję Skaluj.

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

  3. Kliknij przycisk Zapisz. Zostanie wyświetlony komunikat z potwierdzeniem. Kliknij pozycję tak, aby potwierdzić, lub nie, aby anulować.

PowerShell

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. 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. Poniższy przykład ustawia 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 dedykowanej puli SQL (dawniej SQL DW)

T-SQL

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

Aby zmienić jednostki DWU:

  1. Połączenie do głównej bazy danych skojarzonej z serwerem.
  2. Użyj instrukcji TSQL ALTER DATABASE . Poniższy przykład ustawia cel poziomu usługi 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": "DW1000c"
    }
}

Aby uzyskać więcej przykładów interfejsu API REST, zobacz Interfejsy API REST dla dedykowanej puli SQL (dawniej SQL DW).

Sprawdzanie stanu zmian jednostek 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 zaimplementowanie 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 w witrynie Azure Portal.

Aby sprawdzić stan zmian jednostek DWU:

  1. Połączenie do głównej bazy danych skojarzonej z serwerem.

  2. Prześlij następujące zapytanie, aby sprawdzić stan bazy danych.

    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 (dawniej SQL DW), takich jak operacja i stan operacji, czyli IN_PROGRESS lub UKOŃCZONO.

Przepływ pracy skalowania

Po rozpoczęciu 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 tego 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 na potrzeby zarządzania obciążeniami oraz Limity pamięci i współbieżności.