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 datawarehouse-eenheden?
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 met de naam DWU's (Data Warehouse Units). Een DWU vertegenwoordigt een abstracte, genormaliseerde meting van rekenresources en prestaties.
Een wijziging in uw serviceniveau wijzigt het aantal DWU's dat beschikbaar is voor het systeem, waardoor de prestaties en de kosten van uw systeem worden aangepast.
Voor betere prestaties kunt u het aantal datawarehouse-eenheden verhogen. Verminder de datawarehouse-eenheden voor minder prestaties. Opslag- en rekenkosten worden afzonderlijk gefactureerd, dus het wijzigen van datawarehouse-eenheden heeft geen invloed op de opslagkosten.
Prestaties voor datawarehouse-eenheden zijn gebaseerd op deze metrische gegevens van de datawarehouse-workload:
- Hoe snel een standaard toegewezen SQL-pool (voorheen SQL DW)-query een groot aantal rijen kan scannen en vervolgens een complexe aggregatie kan uitvoeren. Deze bewerking is I/O- en CPU-intensief.
- Hoe snel de toegewezen SQL-pool (voorheen SQL DW) gegevens kan opnemen uit Azure Storage-blobs of Azure Data Lake. Deze bewerking is netwerk- en CPU-intensief.
- 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 distribueren ervan over de knooppunten van het apparaat en het opnieuw schrijven naar de opslag. Deze bewerking is CPU, IO en netwerkintensief.
Het aantal DWUs verhogen
- De prestaties van het systeem veranderen lineair voor scans, aggregaties en CTAS-instructies.
- Verhoogt het aantal lezers en schrijvers voor PolyBase-laadbewerkingen.
- Verhoogt het maximum aantal gelijktijdige query's en gelijktijdigheidsslots.
Serviceniveaudoelstelling
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 rekenniveaus die beginnen bij DW100c. Bestaande datawarehouses op dit moment op Gen1 waarvoor de lagere rekenlagen nodig zijn, kunnen nu upgraden naar Gen2 in de regio's die momenteel beschikbaar zijn zonder extra kosten. Als uw regio nog niet wordt ondersteund, kunt u nog steeds upgraden 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 datawarehouse-eenheden
Elke prestatielaag maakt gebruik van een iets andere maateenheid voor hun datawarehouse-eenheden. Dit verschil wordt weergegeven op de factuur, omdat de schaaleenheid rechtstreeks wordt omgezet in facturering.
- Gen1-datawarehouses worden gemeten in DWU's (Data Warehouse Units).
- Gen2-datawarehouses worden gemeten in compute Data Warehouse-eenheden (cDWU's).
Zowel DWU's als cDWU's ondersteunen het omhoog of omlaag schalen van rekenkracht en het onderbreken van rekenkracht wanneer u het datawarehouse niet hoeft te gebruiken. Deze bewerkingen zijn allemaal op aanvraag. Gen2 maakt gebruik van een lokale schijfcache op de rekenknooppunten om de prestaties te verbeteren. Wanneer u het systeem schaalt of onderbreekt, wordt de cache ongeldig en is er dus een periode van cacheverwarming vereist 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 datawarehouse-eenheden toestaat. Zie de capaciteitslimieten voor workloadbeheer voor meer informatie.
Hoeveel datawarehouse-eenheden heb ik nodig
Het ideale aantal datawarehouse-eenheden is erg afhankelijk 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:
Selecteer eerst een kleinere DWU.
Bewaak de prestaties van uw toepassing terwijl u gegevens laadt in het systeem, waarbij u het aantal geselecteerde DWU's bekijkt in vergelijking met de prestaties die u ziet. Controleer dit door het resourcegebruik te controleren.
Identificeer eventuele aanvullende vereisten voor periodieke perioden van piekactiviteit. Workloads die aanzienlijke pieken en dalen in de activiteit tonen, moeten mogelijk regelmatig geschaald worden.
Toegewezen SQL-pool (voorheen SQL DW) is een schaalbaar systeem waarmee grote hoeveelheden rekenkracht kan worden ingezet en aanzienlijke hoeveelheden gegevens kan worden bevraagd.
Als u de werkelijke mogelijkheden voor schalen wilt zien, met name bij grotere DWU's, raden we u aan de gegevensset te schalen terwijl u schaalt om ervoor te zorgen dat u voldoende gegevens hebt om de CPU's te voeden. Voor het testen van de schaal raden we u aan ten minste 1 TB te gebruiken.
Notitie
Queryprestaties nemen alleen toe met meer parallellisatie als het werk kan worden gesplitst tussen rekenknooppunten. Als u merkt dat het schalen de prestaties niet wijzigt, moet u mogelijk het tabelontwerp en/of uw query's afstemmen. Zie Gebruikersquery's beheren voor hulp bij het afstemmen van query's.
Machtigingen
Voor het wijzigen van de datawarehouse-eenheden zijn de machtigingen vereist die worden beschreven in ALTER DATABASE.
Ingebouwde Azure-rollen, zoals Inzender voor SQL DB en INzender voor SQL Server, kunnen DWU-instellingen wijzigen.
Huidige DWU-instellingen weergeven
De huidige DWU-instelling weergeven:
- Open SQL Server Object Explorer in Visual Studio.
- Maak verbinding met de hoofddatabase die is gekoppeld aan de logische SQL-server.
- Selecteren vanuit de dynamische beheerweergave sys.database_service_objectives. Hier volgt 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
;
Datawarehouse-eenheden aanpassen
Azure Portal
DWU's veranderen:
Open Azure Portal, open uw database en klik op Schalen.
Verplaats onder Schalen de schuifregelaar naar links of rechts om de DWU-instelling te wijzigen.
Klik op Opslaan. Er wordt een bevestigingsbericht weergegeven. Klik op Ja om te bevestigen of nee om te annuleren.
PowerShell
Notitie
U wordt aangeraden 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 MySQLDW die wordt gehost op de server MyServer.
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 DWUsettings bekijken, de instellingen wijzigen en de voortgang controleren.
DWUs aanpassen:
- Maak verbinding met de hoofddatabase die is gekoppeld aan uw server.
- Gebruik de T-SQL-instructie ALTER DATABASE. In het volgende voorbeeld wordt de serviceniveaudoelstelling ingesteld op DW1000c voor de database MySQLDW.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;
REST API's
Als u de DWU's wilt wijzigen, gebruikt u de REST API voor 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 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"
}
}
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 voltooid. 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 automatisering correct implementeren. De portal geeft een melding na voltooiing van een bewerking en de huidige status van de databases, maar staat programmatische controle van de status niet toe.
U kunt de databasestatus niet controleren op uitschaalbewerkingen met Azure Portal.
De status van DWU-wijzigingen controleren:
Maak verbinding met de hoofddatabase die is gekoppeld aan uw server.
Verzend de volgende query om de databasestatus 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 zelf en de status ervan, welke IN_PROGRESS of COMPLETED kan zijn.
De opschalingswerkstroom
Wanneer u een schaalbewerking start, beëindigt het systeem eerst alle geopende sessies, zodat alle geopende transacties worden teruggezet om een consistente status te garanderen. Voor schalingsbewerkingen wordt alleen geschaald nadat de transactie-terugdraaiing is voltooid.
- Voor een opschalingsbewerking worden alle rekenknooppunten losgekoppeld, worden de extra rekenknooppunten in gebruik genomen en vervolgens opnieuw gekoppeld aan de opslaglaag.
- Bij een uitschaalbewerking worden alle rekenknooppunten losgekoppeld en worden 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.