Delen via


Resource Governor-classificatiefunctie

van toepassing op:SQL ServerAzure SQL Managed Instance

Het classificatieproces van resource governor kan een classificatiefunctie gebruiken om binnenkomende sessies toe te wijzen aan een workloadgroep. De classificatiefunctie bevat uw aangepaste logica voor het classificeren van sessies in workloadgroepen.

Zie Tutorial: Resource Governor configuration examples and best practicesvoor voorbeelden van configuratie en bewaking en voor meer informatie over best practices voor Resource Governor.

Classificatie

Met Resource Governor wordt elke nieuwe sessie geclassificeerd in een werklastgroep. De classificatie is een scalaire door de gebruiker gedefinieerde functie die u maakt. Het bevat de gewenste logica om binnenkomende sessies toe te wijzen aan een workloadgroep. De scalaire waarde die door de classificator wordt geretourneerd, is de naam van een werkbelastinggroep die moet worden toegewezen aan een binnenkomende sessie.

Als resource governor is ingeschakeld en een classificatiefunctie is opgegeven in de configuratie van resource governor, bepaalt de functie-uitvoer de workloadgroep die wordt gebruikt voor nieuwe sessies. Anders worden alle gebruikerssessies geclassificeerd in de default workloadgroep.

Notitie

De internal workloadgroep wordt alleen gebruikt voor interne systeemaanvragen. U kunt de criteria die worden gebruikt voor het toewijzen van aanvragen niet wijzigen in de internal workloadgroep en u kunt aanvragen niet expliciet classificeren in de internal workloadgroep.

U moet de volgende stappen uitvoeren om een classificatiefunctie te kunnen gebruiken:

  1. Maak de functie in de master-database met behulp van CREATE FUNCTION. De functie moet schemabinding gebruiken.
  2. Verwijs naar de functie in de configuratie van resource governor met behulp van ALTER RESOURCE GOVERNOR- met de parameter CLASSIFIER_FUNCTION.
  3. De nieuwe configuratie effectief maken met behulp van ALTER RESOURCE GOVERNOR RECONFIGURE.

Belangrijk

Er kan een time-out optreden voor clientverbindingen als de classificatiefunctie niet binnen de door de client geconfigureerde time-outperiode van de verbinding wordt voltooid. Het is belangrijk dat u classificatiefuncties maakt die de uitvoering voltooien voordat er een time-out voor de verbinding kan optreden.

Houd de classificatiefunctie eenvoudig. Vermijd het gebruik van complexe of tijdrovende logica. Vermijd indien mogelijk gegevenstoegang in de classificatie.

De classificatiefunctie heeft de volgende kenmerken en gedragingen:

  • De functie wordt gedefinieerd in het serverbereik (in de master-database).
  • De functie wordt gedefinieerd met schemabinding. Voor meer informatie, zie SCHEMABINDING.
  • De functie wordt geëvalueerd voor elke nieuwe sessie, zelfs wanneer groepsgewijze verbindingen zijn ingeschakeld.
  • De functie retourneert de context van de workloadgroep voor de sessie. De sessie wordt toegewezen aan de workloadgroep die door de classificeerder wordt geretourneerd, gedurende de levensduur van de sessie.
  • Als de functie NULL, defaultof de naam van een niet-bestaande workloadgroep retourneert, krijgt de sessie de context van de default workloadgroep. De sessie krijgt ook de default context als de functie om welke reden dan ook mislukt.
  • Nadat een classificatiefunctie is toegevoegd of verwijderd met behulp van ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...) instructie, wordt de wijziging pas van kracht nadat ALTER RESOURCE GOVERNOR RECONFIGURE instructie is uitgevoerd.
  • Er kan slechts één functie tegelijk worden aangewezen als classificatie.
  • De classificatiefunctie kan niet worden gewijzigd of verwijderd, tenzij de classificatiestatus wordt verwijderd met behulp van ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...) instructie waarmee de functienaam wordt ingesteld op NULL of op de naam van een andere functie.
  • Als er geen classificatiefunctie is, worden alle sessies geclassificeerd in de default groep.
  • De workloadgroepen die zijn opgegeven in de uitvoer van de classificatiefunctie vallen buiten de reikwijdte van de schemabindingbeperking. U kunt bijvoorbeeld geen tabel verwijderen waarnaar wordt verwezen in de classificatiefunctie, maar u kunt een werkbelastinggroep verwijderen, zelfs als de classificatie de naam van die groep retourneert.

DAC inschakelen

Voor probleemoplossing en diagnostische doeleinden raden we u aan proactief de Dedicated Administrator Connection (DAC) in te schakelen en vertrouwd te raken. De DAC is niet onderworpen aan resource governor-classificatie. U kunt een DAC gebruiken om een classificatiefunctie te bewaken en op te lossen, zelfs als de configuratie van uw resource governor defect is en andere verbindingen niet bruikbaar maakt. Zie Diagnostische verbinding voor databasebeheerdersvoor meer informatie.

Als een DAC niet beschikbaar is voor probleemoplossing, kunt u de server starten in de modus voor één gebruiker. Hoewel de verbinding met de modus voor één gebruiker niet onderhevig is aan classificatie, biedt deze u niet de mogelijkheid om de classificatie van resource governor vast te stellen terwijl deze wordt uitgevoerd.

Zodra u verbinding maakt met behulp van een DAC of verbinding maakt in de modus voor één gebruiker, kunt u de configuratie van resource governor wijzigen om een defecte classificatiefunctie te verwijderen of resource governor uitschakelen.

Aanmeldingsproces

In de context van resource governor bestaat het aanmeldingsproces voor een sessie uit de volgende stappen:

  1. Aanmeldingsverificatie.
  2. aanmeldingstrigger uitvoering. Vindt alleen plaats als logon triggers aanwezig zijn in de instantie.
  3. Classificatie.

Wanneer de classificatie wordt gestart, voert Resource Governor de classificatiefunctie uit en wordt de scalaire waarde gebruikt die door de functie wordt geretourneerd om aanvragen naar de overeenkomende workloadgroep te verzenden.

U kunt de uitvoering van aanmeldingstriggers en de classificatiefunctie bewaken met behulp van sys.dm_exec_sessions - en sys.dm_exec_requests systeemweergaven.

Voorbeelden

De classificatiefunctie resource governor kan een groot aantal aangepaste logica gebruiken. Voor meer voorbeelden en een walkthrough, zie Tutorial: voorbeelden en best practices voor de configuratie van de Resource Governor.

Een. Hostnaam

Deze functie classificeert sessies van een specifieke hostnaam in een workloadgroep met de naam Reports, met behulp van de HOST_NAME() ingebouwde systeemfunctie. Alle andere sessies blijven geclassificeerd in de default workload groep.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (HOST_NAME() IN ('reportserver1','reportserver2'))
        SET @grp_name = 'Reports';
    
    RETURN @grp_name;
END;
GO

B. Gebruikersnaam

Deze functie classificeert sessies van specifieke gebruikersnamen of serviceaccountnamen in een workloadgroep met de naam Reports, met behulp van de SUSER_SNAME() ingebouwde systeemfunctie. Alle andere sessies blijven geclassificeerd in de default-workloadgroep.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (SUSER_SNAME() IN ('Reporting', 'domain/svc_reporting'))
        SET @grp_name = 'Reports';
    
    RETURN @grp_name;
END;
GO

C. Toepassingsnaam

Deze functie classificeert sessies van specifieke toepassingsnamen in een workloadgroep met de naam Adhoc, met behulp van de APP_NAME() ingebouwde systeemfunctie. Alle andere sessies worden nog steeds geclassificeerd in de default-werkloadgroep.

Belangrijk

Een toepassing of gebruiker kan elke toepassingsnaam opgeven als onderdeel van de verbindingsreeks. Gebruikers kunnen verbinding maken via een groot aantal toepassingen.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (APP_NAME() IN ('Microsoft SQL Server Management Studio - Query','azdata'))
        SET @grp_name = 'Adhoc';
    
    RETURN @grp_name;
END;
GO