Data Warehouse Units (DWU's) voor toegewezen SQL-pool (voorheen SQL DW) in Azure Synapse Analytics

Dit document bevat aanbevelingen voor het kiezen van het ideale aantal datawarehouse-eenheden (DWU's) voor toegewezen SQL-pool (voorheen SQL DW) om de prijs en prestaties te optimaliseren en het aantal eenheden te wijzigen.

Wat zijn Data Warehouse Units?

Een toegewezen SQL-pool (voorheen SQL DW) vertegenwoordigt een verzameling analytische resources die worden ingericht. Analytische resources worden gedefinieerd als een combinatie van CPU, geheugen en IO.

Deze drie resources worden gebundeld in rekenschaaleenheden, ook wel Data Warehouse Units (DWU's) genoemd. Met een DWU wordt een abstracte, genormaliseerde meting van rekenresources en prestaties aangeduid.

Door een wijziging in uw serviceniveau wordt het aantal beschikbare DWU's voor het systeem gewijzigd, waardoor de prestaties en de kosten van uw systeem worden aangepast.

Voor betere prestaties kunt u het aantal DWU's verhogen. Voor mindere prestaties vermindert u het aantal DWU's. Opslagkosten en rekenkosten worden afzonderlijk gefactureerd, waardoor het wijzigen van het aantal DWU's niet van invloed is op de opslagkosten.

De prestaties van DWU's zijn gebaseerd op de metrische gegevens van de workload van deze datawarehouses:

  • Hoe snel een standaard toegewezen SQL-pool (voorheen SQL DW)-query een groot aantal rijen kan scannen en vervolgens een complexe aggregatie kan uitvoeren. Dit is een I/O-bewerking waarbij de CPU intensief wordt belast.
  • Hoe snel de toegewezen SQL-pool (voorheen SQL DW) gegevens kan opnemen uit Azure Storage-blobs of Azure Data Lake. Dit is een netwerkbewerking waarbij de CPU intensief wordt belast.
  • Hoe snel de CREATE TABLE AS SELECT T-SQL-opdracht een tabel kan kopiëren. Deze bewerking omvat het lezen van gegevens uit de opslag, het verdelen van de gegevens over de knooppunten van het systeem en het weer terugschrijven van de gegevens naar de opslag. Dit is een bewerking waarbij de CPU, de IO en het netwerk intensief worden belast.

DWU's verhogen:

  • Lineaire wijzigingen in de prestaties van het systeem voor scans, aggregaties en CTAS-instructies
  • Verhoogt het aantal lezers en schrijvers voor PolyBase-laadbewerkingen
  • Verhoogt het maximum aantal gelijktijdige query's en gelijktijdigheidssites

Service Level Objective

De SLO (Service Level Objective) is de schaalbaarheidsinstelling waarmee het kosten- en prestatieniveau van uw toegewezen SQL-pool (voorheen SQL DW) wordt bepaald. De serviceniveaus voor een toegewezen Gen2 SQL-pool (voorheen SQL DW) worden gemeten in dwu's (datawarehouse-eenheden), bijvoorbeeld DW2000c.

Notitie

Toegewezen SQL-pool (voorheen SQL DW) Gen2 heeft onlangs extra schaalmogelijkheden toegevoegd ter ondersteuning van rekenlagen met een laag DW100c. Bestaande datawarehouses met Gen1 waarvoor de lagere rekenlagen zijn vereist, kunnen nu kosteloos worden bijgewerkt naar Gen2 in de regio's die momenteel beschikbaar zijn. Als uw regio nog niet wordt ondersteund, kunt u nog steeds een upgrade uitvoeren naar een ondersteunde regio. Zie Upgrade naar Gen2 voor meer informatie.

In T-SQL bepaalt de SERVICE_OBJECTIVE-instelling het serviceniveau en de prestatielaag voor uw toegewezen SQL-pool (voorheen SQL DW).

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

Prestatielagen en Data Warehouse Units

In elke prestatielaag wordt niet precies dezelfde maateenheid voor de Data Warehouse Units gebruikt. Dit verschil wordt op de factuur weergegeven wanneer de schaaleenheid rechtstreeks wordt omgezet in de facturering.

  • Gen1-datawarehouses worden gemeten in Data Warehouse Units (DWU's).
  • Gen2-datawarehouses worden gemeten in compute Data Warehouse Units (cDWU's).

Zowel DWU's als cDWU's ondersteunen het schalen van rekenkracht naar boven of beneden en het pauzeren van rekenkracht wanneer u het datawarehouse niet hoeft te gebruiken. Deze bewerkingen zijn allemaal on-demand. Gen2 maakt gebruik van een lokale schijfcache op de rekenknooppunten om de prestaties te verbeteren. Wanneer u het systeem schaalt of pauzeert, is de cache ongeldig en moet de cache gedurende een bepaalde periode worden opgewarmd voordat optimale prestaties worden bereikt.

Capaciteitslimieten

Elke SQL-server (bijvoorbeeld myserver.database.windows.net) heeft een DTU-quotum (Database Transaction Unit) dat een specifiek aantal DWU's toestaat. Zie de Capaciteitslimieten voor workloadbeheer voor meer informatie.

Hoeveel DWU's heb ik nodig?

Het ideale aantal DWU's hangt zeer veel af van uw workload en de hoeveelheid gegevens die u in het systeem hebt geladen.

Stappen voor het vinden van de beste DWU voor uw workload:

  1. Begin door een kleinere DWU te selecteren.

  2. Bewaak de prestaties van uw toepassing tijdens het testen van gegevens die in het systeem worden geladen, waarbij u het aantal geselecteerde DWU's vergelijkt met de prestaties die u ziet. Controleer dit door het resourcegebruik te controleren.

  3. Identificeer eventuele aanvullende vereisten voor periodieke perioden met piekactiviteit. Workloads die aanzienlijke pieken en dalen in activiteiten tonen, moeten mogelijk regelmatig worden geschaald.

Toegewezen SQL-pool (voorheen SQL DW) is een uitschalend systeem waarmee grote hoeveelheden rekenkracht kunnen worden ingericht en grote hoeveelheden gegevens kunnen worden opvraagbaar.

Als u de echte mogelijkheden voor schalen wilt zien, met name bij grotere DWU's, kunt u het beste de gegevensset schalen terwijl u schaalt om ervoor te zorgen dat u voldoende invoer hebt voor de CPU's. Voor schaaltests kunt u het beste minimaal 1 TB gebruiken.

Notitie

Queryprestaties worden alleen verhoogd met meer parallellisatie als het werk kan worden gesplitst tussen rekenknooppunten. Als u merkt dat de prestaties niet veranderen door het schalen, moet u mogelijk uw tabelontwerp en/of uw query's afstemmen. Zie Gebruikersquery's beheren voor meer informatie over het afstemmen van query's.

Machtigingen

Voor het wijzigen van de DWU's zijn de machtigingen vereist die worden beschreven in ALTER DATABASE.

Ingebouwde Azure-rollen, zoals Inzender voor SQL-databases en Inzender voor SQL Server, kunnen DWU-instellingen wijzigen.

Huidige DWU-instellingen weergeven

De huidige DWU-instellingen weergeven:

  1. Open SQL Server-objectverkenner in Visual Studio.
  2. Maak verbinding met de hoofddatabase die aan de logische SQL-Server is gekoppeld.
  3. Maak een selectie in de dynamische beheerweergave sys.database_service_objectives. Dit is een voorbeeld:
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
;

DWU's wijzigen

Azure Portal

DWU's wijzigen:

  1. Open de Azure-portal, open uw database en klik op Schalen.

  2. Verplaats onder Schalen de schuifregelaar naar links of rechts om de DWU-instelling te wijzigen.

  3. Klik op Opslaan. Er verschijnt een bevestigingsbericht. Klik op Ja om te bevestigen of Nee om te annuleren.

Powershell

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Als u de DWU's wilt wijzigen, gebruikt u de PowerShell-cmdlet Set-AzSqlDatabase. In het volgende voorbeeld wordt de serviceniveaudoelstelling ingesteld op DW1000 voor de database MijnSQLDW die wordt gehost op server MijnServer.

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

Zie PowerShell-cmdlets voor toegewezen SQL-pool (voorheen SQL DW) voor meer informatie

T-SQL

Met T-SQL kunt u de huidige DWU-instellingen weergeven, de instellingen wijzigen en de voortgang controleren.

De DWU's wijzigen:

  1. Maak verbinding met de hoofddatabase die aan uw server is gekoppeld.
  2. Gebruik de TSQL-instructie ALTER DATABASE. In het volgende voorbeeld wordt de serviceniveaudoelstelling ingesteld op DW1000c voor de database MijnSQLDW.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

REST-API's

Als u de DWU's wilt wijzigen, gebruikt u de REST API Database maken of bijwerken. In het volgende voorbeeld wordt de serviceniveaudoelstelling ingesteld op DW1000c voor de database MySQLDW, die wordt gehost op server MyServer. De server bevindt zich in een Azure-resourcegroep met de naam ResourceGroep1.

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"
    }
}

Zie REST API's voor toegewezen SQL-pool (voorheen SQL DW) voor meer VOORBEELDEN van REST API's.

Status van DWU-wijzigingen controleren

Het kan enkele minuten duren voordat DWU-wijzigingen zijn doorgevoerd. Als u automatisch schaalt, kunt u overwegen logica te implementeren om ervoor te zorgen dat bepaalde bewerkingen zijn voltooid voordat u doorgaat met een andere actie.

Door de databasestatus via verschillende eindpunten te controleren, kunt u automatiseringen juist implementeren. De portal geeft een melding nadat een bewerking is voltooid en de huidige status van de databases, maar staat geen programmatische controle van de status toe.

U kunt de status van de database niet controleren op scale-outbewerkingen met de Azure-portal.

De status van DWU-wijzigingen controleren:

  1. Maak verbinding met de hoofddatabase die aan uw server is gekoppeld.

  2. Verzend de volgende query om de status van de database te controleren.

    SELECT    *
    FROM      sys.dm_operation_status
    WHERE     resource_type_desc = 'Database'
    AND       major_resource_id = 'MySQLDW'
    ;
    

Deze DMV retourneert informatie over verschillende beheerbewerkingen in uw toegewezen SQL-pool (voorheen SQL DW), zoals de bewerking en de status van de bewerking. Dit is IN_PROGRESS of COMPLETED.

De werkstroom voor schalen

Wanneer u een schaalbewerking start, beëindigt het systeem eerst alle geopende sessies. Alle geopende transacties worden teruggedraaid om een consistente status te garanderen. Schaalbewerkingen worden alleen uitgevoerd nadat de transactionele terugdraaibewerking is voltooid.

  • Bij omhoog schalen worden alle rekenknooppunten losgekoppeld, worden er extra rekenknooppunten ingericht die vervolgens opnieuw worden gekoppeld aan de opslaglaag.
  • Bij omlaag schalen worden alle rekenknooppunten losgekoppeld en worden vervolgens alleen de benodigde knooppunten opnieuw gekoppeld aan de opslaglaag.

Volgende stappen

Zie Resourceklassen voor workloadbeheer en Geheugen en gelijktijdigheidslimieten voor meer informatie over het beheren van prestaties.