Pagine

giovedì 6 dicembre 2012

SQL Server 2012 : Configurare il Resource Governor

Il Resource Governor è stato introdotto dall'edizione di SQL 2008, ma non mi pare sia molto utilizzato..... In poche parole vi consente di definire il limite di utilizzo della cpu e della memoria per i login e le applicazioni che si connettono a SQL server.

Faccio un esempio. Un'istanza di SQL Server contiene 2 DB, uno utilizzato dal principale software aziendale per il core business, l'altro per attività a bassissima priorità, per esempio reportistica.
Potrebbe accadere che il carico di lavoro prodotto per reperire i dati della reportistica tolga molte risorse al DB principale, rallentanto il core business aziendale.
Il Resource Governor protrebbe fare in modo che l'attività di reportistica non "rubi" risorse all'attività principale.

Vediamo come configurarlo utilizzando il codice T-SQL, così anche i sistemisti dalle dita pigre potranno impostarlo tranquillamente ;-)

La prima cosa da fare è creare una tabella contenente tutti i login che si desidera associare ad un workload group ed una funzione di classificazione usata dal Resource Governor per determinare a quale workload group il login che si connette dovrà essere associato

Use Master
GO

Create table dbo.TabLoginWorkload
(
 LogOnName varchar(50),
 WorkLoadName varchar(50)
)
Go

Insert into TabLoginWorkload
 Values('CoreBusinessLogin','MaxResource')
  ,('ReporttLogin','MinResource')
Go

Create Function dbo.uf_RG_ClassifierFunction()
returns sysname
with Schemabinding
as
begin

 Return (Select WorkLoadName from dbo.TabLoginWorkload where LogOnName = suser_sname())

End
Go

Per comodità ho creato 2 SQL Login di test denominati [CoreBusinessLogin] e [ReporttLogin].

Ora è necessario configurare il resource Pool, seguito dalla configurazione del workload group

Create Resource Pool Pool_MaxResource with
( 
 Min_Cpu_Percent=70, Max_Cpu_Percent=100,
 Min_Memory_Percent=70, Max_Memory_Percent=100
)
GO

Create Resource Pool Pool_MinResource with
( 
 Min_Cpu_Percent=0, Max_Cpu_Percent=10,
 Min_Memory_Percent=0, Max_Memory_Percent=25
)
GO

Create Workload Group MaxResource USING Pool_MaxResource ;
GO

Create Workload Group MinResource USING Pool_MinResource ;
GO



Ora è necessario associare il Resource Governor alla funzione di classificazione e abilitarlo....

Alter Resource Governor with (Classifier_Function = dbo.uf_RG_ClassifierFunction);
GO

Alter Resource Governor reconfigure
GO

Ora da mangement studio apro una connessione utilizzando il login [CoreBusinessLogin] ed una con [ReporttLogin]

Dall'activity Monitor vediamo che i due login sono associati ai 2 workload group configurati in modo da dare sempre la maggiore priorità a [CoreBusinessLogin].





Ciao

Luca

Nessun commento:

Posta un commento