Synapse SQL-resourceverbruik
In dit artikel worden resourceverbruiksmodellen van Synapse SQL beschreven.
Serverloze SQL-pool
Serverloze SQL-pools werken met betalen per query. U hoeft daarom niet de juiste grootte te kiezen. Het systeem wordt automatisch aangepast op basis van uw vereisten, zodat u uw infrastructuur niet hoeft te beheren en de juiste grootte voor uw oplossing kunt kiezen.
Toegewezen SQL-pool: DWU's (Data Warehouse Unit) en cDWU's (compute Data Warehouse Unit)
Aanbevelingen voor het kiezen van het ideale aantal Data Warehouse Units (DWU's) om de prijs en prestaties te optimaliseren en hoe u het aantal units kunt wijzigen.
Data Warehouse Units
Een Synapse SQL-pool 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. Een wijziging in uw serviceniveau wijzigt het aantal DWU's dat beschikbaar is voor het systeem. Op hun beurt worden de prestaties en kosten van uw systeem 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 standaarddatawarehousequery 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 het datawarehouse 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
- Hiermee wordt het maximale aantal gelijktijdige query's en gelijktijdigheidssleuven verhoogd.
Service Level Objective
De Service Level Objective (SLO) is de schaalbaarheidsinstelling waarmee de kosten en het prestatieniveau van uw datawarehouse worden bepaald. De serviceniveaus voor Gen2 worden gemeten in compute Data Warehouse Units (cDWU), bijvoorbeeld DW2000c. Gen1-serviceniveaus worden gemeten in DWU's, bijvoorbeeld DW2000.
De Service Level Objective (SLO) is de schaalbaarheidsinstelling waarmee de kosten en het prestatieniveau van uw datawarehouse worden bepaald. De serviceniveaus voor toegewezen SQL-pool Gen2 worden gemeten in DWU (Data Warehouse Unit), bijvoorbeeld DW2000c.
Notitie
In Azure Synapse Analytics Gen2 zijn onlangs extra schaalmogelijkheden toegevoegd ter ondersteuning van rekenlagen van 100 cDWU. 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 instelling SERVICE_OBJECTIVE het serviceniveau en de prestatielaag voor uw toegewezen SQL-pool.
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.
Naarmate u datawarehouse-eenheden vergroot, vergroot u de rekenresources lineair. Gen2 biedt de beste queryprestaties en hoogste schaal. Gen2-systemen maken ook optimaal gebruik van de cache.
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.
Bepaal het aantal datawarehouse-eenheden dat u nodig hebt
Het ideale aantal datawarehouse-eenheden is zeer 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:
- Begin door een kleinere DWU te selecteren.
- 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.
- Identificeer eventuele aanvullende vereisten voor periodieke perioden met piekactiviteit. Workloads die aanzienlijke pieken en dalen in activiteiten tonen, moeten mogelijk regelmatig worden geschaald.
SQL-pool is een scale-outsysteem waarmee u grote hoeveelheden reken- en querygegevens kunt inrichten. 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:
- Open SQL Server-objectverkenner in Visual Studio.
- Maak verbinding met de hoofddatabase die aan de logische SQL-Server is gekoppeld.
- 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:
Open de Azure Portal, open uw database en klik op Schalen.
Verplaats onder Schalen de schuifregelaar naar links of rechts om de DWU-instelling te wijzigen.
Selecteer 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 Azure Synapse Analytics 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:
- Maak verbinding met de hoofddatabase die aan uw server is gekoppeld.
- 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 MijnSQLDW die wordt gehost op server MijnServer. 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": DW1000
}
}
Zie REST-API’s voor Azure Synapse Analytics 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 geeft de huidige status van de databases weer, maar staat geen programmatische controle van de status toe.
U kunt de status van de database niet controleren op uitschaalbewerkingen met de Azure Portal.
De status van DWU-wijzigingen controleren:
- Maak verbinding met de hoofddatabase die aan uw server is gekoppeld.
- Verzend de volgende query om de status van de database te controleren.
SELECT *
FROM sys.databases
;
- Verzend de volgende query om de status van de bewerking 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 de toegewezen SQL-pool, zoals de bewerking en de status van de bewerking, die IN_PROGRESS of COMPLETED is.
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.