SQL Server – Resource Governor del 2 – Uppsättning
Resource Governor är en funktion i SQL Server som kan hantera hur mycket systemresurser olika laster får lov att använda och hur. Det går att begränsa/övervaka/prioritera den mängd CPU och minne som en specifik last får använda på en instans.
I del 1 av miniserien om Resource Governorn beskrev jag lite kortfattat vad Resource Governorn kan användas till och principen bakom den. Här tänkte jag förklara hur man kan använda TSQL för att sätta upp de ingående komponenterna. Vi fortsätter med exemplet från del 1 där ekonomiavdelningen vill köra rapporter av produktförsäljning mot en webshop som normalt sätt har övervägande OLTP last. För att det inte ska bli några resurskonflikter vill man begränsa rapportdelens resursutnyttjande. Övriga anrop ska använda default poolen.
I det här fallet har rapportverktyget och webshopen olika SQL login så man enkelt kan avgöra vilken typ av anslutning det är, reportUser används av rapportverktyget.
Steg 1: Skapa Resource Poolen för rapportdelen
Vi tilldelar bara en liten del av resurserna till rapportkörningarna för att inte de mer kritiska delarna ska påverkas.
CREATE RESOURCE POOL ReportPool WITH ( MIN_CPU_PERCENT=0, MAX_CPU_PERCENT=30, MIN_MEMORY_PERCENT=0, MAX_MEMORY_PERCENT=30) GO
Steg 2: Skapa Workload Group
Skapa en Workload som kopplas mot Resource poolen som vi nyss skapade.
CREATE WORKLOAD GROUP ReportGroup USING ReportPool ; GO
Steg 3: Skapa en user defined function som definierar vilken Workload group som en last ska använda.
I detta exempel använder vi SUSER_NAME() för att bestämma vilken Workgroup som ska användas.
CREATE FUNCTION dbo. Classifier() RETURNS SYSNAME WITH SCHEMABINDING AS BEGIN DECLARE @workloadGroup AS SYSNAME IF(SUSER_NAME() = 'reportUser') SET @WorkloadGroup = 'ReportGroup' ELSE SET @WorkloadGroup = 'default' RETURN @WorkloadGroup END GO
Steg 4: I det fjärde och sista steget startar vi Resource Governor med Classifier funktionen vi skapade i steg 3.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=dbo.Classifier); GO ALTER RESOURCE GOVERNOR RECONFIGURE GO
Steg 5: Om du testat stegen ovan själv och vill ta bort exemplet kan du använda skriptet nedan. Det kommer att avaktivera Resource Governorn och ta bort alla de objekt vi skapat hitintills.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL) GO ALTER RESOURCE GOVERNOR DISABLE GO DROP FUNCTION dbo.Classifier GO DROP WORKLOAD GROUP ReportGroup GO DROP RESOURCE POOL ReportPool GO ALTER RESOURCE GOVERNOR RECONFIGURE GO
Hoppas att det har gett dig lite förståelse för hur man sätter upp Resource Governorn och lite idéer till vad man kan använda den till.
/Björn