Workloadclassificatie voor toegewezen SQL-pool in Azure Synapse Analytics

In dit artikel wordt het proces voor de classificatie van workloads uitgelegd voor het toewijzen van een workloadgroep en het belang van binnenkomende aanvragen met toegewezen SQL-pools in Azure Synapse.

Classificatie

Met classificatie van workloadbeheer kan workloadbeleid worden toegepast op aanvragen door resourceklassen en urgentie toe te wijzen.

Hoewel er veel manieren zijn om datawarehousingworkloads te classificeren, is laden en query's de eenvoudigste en meest voorkomende classificatie. U laadt gegevens met instructies voor invoegen, bijwerken en verwijderen. U kunt een query uitvoeren op de gegevens met behulp van selecties. Een oplossing voor datawarehousing heeft vaak een workloadbeleid voor belastingsactiviteit, zoals het toewijzen van een hogere resourceklasse met meer resources. Een ander workloadbeleid kan van toepassing zijn op query's, zoals een lagere urgentie in vergelijking met laadactiviteiten.

U kunt ook uw load- en queryworkloads subclassificeren. Subclassificatie geeft 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 vóór weergegevens of een feed met sociale gegevens.

Niet alle instructies worden geclassificeerd omdat ze geen resources vereisen of belangrijk 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 nu bereikt door gebruikers toe te wijzen aan een rol waaraan een bijbehorende resourceklasse is toegewezen met behulp van sp_addrolemember. De mogelijkheid om aanvragen buiten een aanmelding bij een resourceklasse te karakteriseren, is met deze mogelijkheid beperkt. Er is nu een uitgebreidere methode voor classificatie beschikbaar met de syntaxis CREATE WORKLOAD CLASSIFIER . Met deze syntaxis kunnen toegewezen SQL-poolgebruikers urgentie toewijzen en hoeveel systeemresources aan een aanvraag worden toegewezen via de workload_group parameter .

Weging van classificatie

Als onderdeel van het classificatieproces wordt er een weging toegepast om te bepalen welke workloadgroep wordt toegewezen. De weging gaat als volgt:

Classificatieparameter Gewicht
LIDNAAM:GEBRUIKER 64
LIDNAAM:ROL 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 gebruiker hoger en wordt dus 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 resourceklassetoewijzing. Dit gedrag is consistent met het bestaande gedrag van de toewijzing van resourceklassen.

Notitie

Het gedrag van beheerde identiteiten (MI) classificeren verschilt tussen de toegewezen SQL-pool in Azure Synapse werkruimten en de zelfstandige toegewezen SQL-pool (voorheen SQL DW). Terwijl de zelfstandige toegewezen SQL-pool MI de toegewezen identiteit onderhoudt, wordt voor Azure Synapse werkruimten de MI uitgevoerd als dbo. Dit kan niet worden gewijzigd. De dbo-rol is standaard geclassificeerd als smallrc. Als u een classificatie maakt voor de dbo-rol, kunt u aanvragen toewijzen aan een andere workloadgroep dan smallrc. Als dbo alleen te algemeen is voor classificatie en een breder effect heeft, kunt u overwegen om label-, sessie- of tijdgebaseerde classificatie te gebruiken in combinatie met de dbo-rolclassificatie.

Systeemclassificaties

Workloadclassificatie heeft systeemworkloadclassificaties. De systeemclassificaties wijzen bestaande resourceklasserollidmaatschappen toe aan resourceklasseresourcetoewijzingen met 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 resourceklasseroltoewijzingen met classificatieprioriteit kan leiden tot onjuiste classificatie wanneer u begint met het maken van nieuwe classificaties met belang.

Denkt u zich het volgende scenario eens in:

  • Aan een bestaand datawarehouse is een databasegebruiker DBAUser toegewezen aan de resourceklasse-rol largerc. De resourceklassetoewijzing is uitgevoerd met sp_addrolemember.
  • Het datawarehouse is nu bijgewerkt met workloadbeheer.
  • Om de nieuwe classificatiesyntaxis te testen, heeft de databaserol DBARole (waarvan DBAUser lid is), een classificatie gemaakt voor hen die ze toewijzen aan mediumrc en 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 classificaties te vereenvoudigen, raden we u aan resourceklasseroltoewijzingen te verwijderen wanneer u workloadclassificaties maakt. De onderstaande code retourneert bestaande resourceklasserollidmaatschappen. Voer sp_droprolemember uit voor elke lidnaam die wordt geretourneerd door 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;

Volgende stappen