Workloadclassificatie voor toegewezen SQL-pool in Azure Synapse Analytics
In dit artikel wordt uitgelegd hoe u een workloadgroep toewijst aan binnenkomende aanvragen met toegewezen SQL-pools in Azure Synapse.
Classificatie
Met classificatie van workloadbeheer kunnen workloadbeleidsregels worden toegepast op aanvragen door resourceklassen en urgentie toe te wijzen.
Hoewel er veel manieren zijn om workloads voor datawarehousing te classificeren, is de eenvoudigste en meest voorkomende classificatie belasting en query's. U laadt gegevens met instructies voor invoegen, bijwerken en verwijderen. U kunt query's uitvoeren op de gegevens met behulp van selecties. Een oplossing voor datawarehousing heeft vaak een workloadbeleid voor belastingactiviteit, zoals het toewijzen van een hogere resourceklasse met meer resources. Een ander workloadbeleid kan van toepassing zijn op query's, zoals een lagere urgentie ten opzichte van belastingsactiviteiten.
U kunt ook uw belastings- en queryworkloads subclassificaties geven. Met subclassificatie hebt u meer controle over uw workloads. Queryworkloads kunnen bijvoorbeeld bestaan uit kubusvernieuwingen, dashboardquery's of ad-hocquery's. U kunt elk van deze queryworkloads classificeren met verschillende resourceklassen of urgentie-instellingen. Belasting kan ook profiteren van subclassificatie. Grote transformaties kunnen worden toegewezen aan grotere resourceklassen. Hogere urgentie kan worden gebruikt om ervoor te zorgen dat belangrijke verkoopgegevens worden geladen voordat weergegevens of een sociale gegevensfeed worden geladen.
Niet alle instructies worden geclassificeerd omdat er geen resources nodig zijn of dat ze van belang zijn om de uitvoering te beïnvloeden. DBCC
opdrachten, BEGIN
, COMMIT
en ROLLBACK TRANSACTION
instructies worden niet geclassificeerd.
Classificatieproces
Classificatie voor toegewezen SQL-pool wordt momenteel bereikt door gebruikers toe te wijzen aan een rol waaraan een bijbehorende resourceklasse is toegewezen met behulp van sp_addrolemember. De mogelijkheid om aanvragen te karakteriseren buiten een aanmelding bij een resourceklasse is beperkt met deze mogelijkheid. Een uitgebreidere methode voor classificatie is nu beschikbaar met de syntaxis CREATE WORKLOAD CLASSIFIER . Met deze syntaxis kunnen toegewezen SQL-poolgebruikers belang toewijzen en hoeveel systeemresources aan een aanvraag worden toegewezen via de workload_group
parameter.
Classificatiegewicht
Als onderdeel van het classificatieproces wordt de weging toegepast om te bepalen welke werkbelastinggroep wordt toegewezen. De weging gaat als volgt:
Classificatieparameter | Gewicht |
---|---|
LIDNAAM:GEBRUIKER | 64 |
MEMBERNAME:ROLE | 32 |
WLM_LABEL | 16 |
WLM_CONTEXT | 8 |
START_TIME/END_TIME | 4 |
De MEMBERNAME
parameter is verplicht. Als de opgegeven lidnaam echter een databasegebruiker is in plaats van een databaserol, is de weging voor de gebruiker hoger en daarom wordt die classificatie gekozen.
Als een gebruiker lid is van meerdere rollen met verschillende resourceklassen die in meerdere classificaties zijn toegewezen of overeenkomen, krijgt de gebruiker de hoogste toewijzing van de resourceklasse. Dit gedrag is consistent met het bestaande toewijzingsgedrag van resourceklassen.
Notitie
Het classificeren van het gedrag van beheerde identiteiten verschilt tussen de toegewezen SQL-pool in Azure Synapse-werkruimten en de zelfstandige toegewezen SQL-pool (voorheen SQL DW). Hoewel de beheerde identiteit van de zelfstandige toegewezen SQL-pool de toegewezen identiteit onderhoudt, worden voor Azure Synapse-werkruimten de beheerde identiteit uitgevoerd als dbo
. Dit kan niet worden gewijzigd. De dbo-rol is standaard geclassificeerd als smallrc. Door een classificatie voor de dbo-rol te maken, kunnen aanvragen worden toegewezen aan een andere workloadgroep dan smallrc. Als dbo alleen te algemeen is voor classificatie en bredere gevolgen heeft, kunt u overwegen om classificatie op basis van labels, sessies of tijd te gebruiken in combinatie met de dbo-rolclassificatie.
Met uitzondering van smallrc worden de dynamische resourceklassen geïmplementeerd als vooraf gedefinieerde databaserollen. Smallrc wordt niet weergegeven als databaserol, maar is de standaardresourceklasse.
Systeemclassificaties
Workloadclassificatie heeft systeemworkloadclassificaties. De systeemclassificaties wijzen bestaande lidmaatschappen van resourceklasserollen toe aan resourceklasseresourcetoewijzingen met een normaal belang. Systeemclassificaties kunnen niet worden verwijderd. Als u systeemclassificaties wilt weergeven, kunt u de onderstaande query uitvoeren:
SELECT * FROM sys.workload_management_workload_classifiers where classifier_id <= 12
Resourceklassetoewijzingen combineren met classificaties
Systeemclassificaties die namens u zijn gemaakt, bieden een eenvoudig pad om te migreren naar workloadclassificatie. Het gebruik van roltoewijzingen van resourceklassen met classificatieprioriteit kan leiden tot onjuiste classificatie wanneer u nieuwe classificaties met belang begint te maken.
Bekijk het volgende scenario:
- Een bestaand datawarehouse heeft een databasegebruiker DBAUser toegewezen aan de rol van grotere resourceklasse. De resourceklassetoewijzing is uitgevoerd met
sp_addrolemember.
- Het datawarehouse wordt nu bijgewerkt met workloadbeheer.
- Als u de nieuwe classificatiesyntaxis wilt testen, heeft de databaserol DBARole (waarvan DBAUser lid is), een classificatie gemaakt waarmee ze worden toegewezen aan mediumrc en een hoge urgentie.
- Wanneer DBAUser zich aanmeldt en een query uitvoert, wordt de query toegewezen aan largerc. Omdat een gebruiker voorrang heeft op een rollidmaatschap.
Om het oplossen van onjuiste classificatie van problemen te vereenvoudigen, raden we u aan resourceklasseroltoewijzingen te verwijderen wanneer u workloadclassificaties maakt. De onderstaande code retourneert bestaande lidmaatschappen van resourceklasserollen. Voer sp_droprolemember uit voor elke lidnaam die wordt geretourneerd uit de bijbehorende resourceklasse.
SELECT r.name AS [Resource Class]
, m.name AS membername
FROM sys.database_role_members rm
JOIN sys.database_principals AS r ON rm.role_principal_id = r.principal_id
JOIN sys.database_principals AS m ON rm.member_principal_id = m.principal_id
WHERE r.name IN ('mediumrc','largerc','xlargerc','staticrc10','staticrc20','staticrc30','staticrc40','staticrc50','staticrc60','staticrc70','staticrc80');
--for each row returned run in the previous query
EXEC sp_droprolemember '[Resource Class]', membername;
Gerelateerde inhoud
- Zie de CLASSIFICATIE CREATE WORKLOAD (Transact-SQL) voor meer informatie over het maken van een classificatie.
- Zie de quickstart over het maken van een workloadclassificatie Een workloadclassificatie maken.
- Zie de artikelen over het configureren van workloadbelang en het beheren en bewaken van workloadbeheer.
- Zie sys. dm_pdw_exec_requests om query's en de toegewezen urgentie weer te geven.