sql server 2008 resource governor
DESCRIPTION
Francesco Diaz http://blogs.technet.com/francesco_diaz Partner Technical Consultant - Microsoft. Sql Server 2008 Resource Governor. Agenda. Introduzione I componenti di Sql Server Resource Governor Come funziona Sql Server Resource Governor Monitorare Sql Server Resource Governor - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/1.jpg)
SQL SERVER 2008 RESOURCE GOVERNOR
Francesco Diaz http://blogs.technet.com/francesco_diaz Partner Technical Consultant - Microsoft
![Page 2: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/2.jpg)
Agenda• Introduzione• I componenti di Sql Server Resource Governor • Come funziona Sql Server Resource Governor• Monitorare Sql Server Resource Governor • Utilizzo di Sql Server Resource Governor• DEMO
2
![Page 3: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/3.jpg)
Introduzione
• Cosa è Resource Governor?– Un modo per segmentare i carichi di lavoro di SQL
Server– Un modo per gestire le risorse di una istanza Sql
Server
3
![Page 4: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/4.jpg)
Introduzione
• Perchè siamo interessati a Resource Governor ?– Vogliamo scegliere quali devono essere I carichi di
lavoro a dover ricevere una “migliore qualità” del servizio
– Vogliamo maggiore granularità nella gestione dei carichi di lavoro
– Vogliamo monitorare i carichi di lavoro del nostro RDBMS
– Abbiamo la necessità di gestire in tempo reale il carico di lavoro
4
![Page 5: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/5.jpg)
Introduzione
• Quando è utile ?– Quando un singolo server condivide più workload
e applicazioni– Quando I carichi di lavoro sono in qualche modo
uniformi e predicibili– Quando vogliamo ridurre il numero di istanze di
SQL
5
![Page 6: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/6.jpg)
Introduzione
• Scenari di esempio– Applicazioni che devono sempre funzionare anche
quando il server è sotto stress– Limitare le query run-away– Dare precedenza ai processi di alcuni utenti/gruppi
6
![Page 7: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/7.jpg)
I componenti di Resource Governor
• Componenti e terminologia– Resource Pools– Workload Groups– Sessioni utente– Funzione di classificazione delle sessioni
7
![Page 8: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/8.jpg)
I componenti di Resource Governor
• Resource Pools– Un pool può essere definito come un server virtuale
all’interno dell’istanza di SQL– Un modo per segmentare le risorse fisiche di Sql
Server (CPU e memoria)– Fino a 18 user defined pools per instanza (+ 2 system
pools)• ‘internal’ pool è utilizzato da SQL Server – richiesto, non
modificabile, può accedere se necessario a tutte le risorse• ‘default’ pool è il gruppo predefinito – richiesto,
modificabile8
![Page 9: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/9.jpg)
I componenti di Resource Governor
• Resource Pools– Composti da :• Gestione delle risorse MIN : il totale delle risorse
minime di tutti I pools non può superare 100• Gestione delle risorse MAX : il totale può anche essere
100, ma il valore MAX viene riconfigurato sulla base dei MIN degli altri pool
– Ogni resource group può avere + workload group, eccetto internal
9
![Page 10: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/10.jpg)
I componenti di Resource Governor
• Workload Group– Rappresenta il contenitore per le sessioni simili, secondo
le classificazioni applicate a ciascuna richiesta– 2 di sistema (internal, default) + un numero illimitato
custom– Usato per segmentare I resource pool– Ogni workload group può esistere solo in un resource pool– Posso fare modifiche “al volo” ma con alcune limitazioni
• Riclassificazione connessioni esistenti
10
![Page 11: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/11.jpg)
Come funziona Resource Governor
• Workload Groups di sistema– Default• Ogni sessione che non viene assegnata ad un gruppo
finisce qui (catch-all)• Può essere modificato
– Internal• Operazioni di sistema girano in questo gruppo• DAC gira in questo gruppo• NON modificabile
11
![Page 12: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/12.jpg)
I componenti di Resource Governor
• Sessioni– Una connessione utente a Sql Server– Verificata ogni volta che l’utente si connette
(anche se il connection pooling è abilitato)
– Collegato ad un gruppo finchè la sessione esiste– Può esistere in un solo gruppo alla volta
12
![Page 13: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/13.jpg)
• Separa le sessioni in gruppi• Una funzione di classificazione per istanza• Viene salvata come UDF scalare nel MASTER• Non accetta parametri• Può impattare negativamente sulle prestazioni
del server
13
Funzione di classificazione
![Page 14: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/14.jpg)
Funzione di classificazione
• Viene eseguita su ogni nuova connessione dopo i LOGON TRIGGER
• Viene eseguita per ogni connessione anche in presenza di connection pooling
• Schemabinding• Salvata nel master• Non è modificabile nè cancellabile quando viene usata
come funzione di classificazione• Restituisce un sysname con il workload group• Non può restituire internal
![Page 15: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/15.jpg)
Funzione di classificazione
• Possono essere usate funzioni esistenti– HOST_NAME(), APP_NAME(), SUSER_NAME(),
SUSER_SNAME(), IS_SRVROLEMEMBER(), IS_MEMBER()• Nuove funzioni e nuove opzioni– CONNECTIONPROPERTY (option)
• Opzioni: NET_TRANSPORT, PROTOCOL_TYPE, AUTH_SCHEME, LOCAL_NET_ADDRESS, LOCAL_TCP_PORT, CLIENT_NET_ADDRESS
– ORIGINAL_DB_NAME()– Nuove opzioni per LOGINPROPERTY()
• DefaultDatabase, DefaultLanguage
![Page 16: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/16.jpg)
Funzione di classificazione
• Segmentare I workload basandosi su…– Il database di destinazione– SQL\Domain user\Gruppo di AD– Applicazione client– Host– In generale tutte le informazioni sulle stringhe di
connessione + informazioni di rete
16
![Page 17: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/17.jpg)
Funzione di classificazione
CREATE FUNCTION dbo.fnTest()RETURNS SYSNAMEWITH SCHEMABINDINGASBEGIN
DECLARE @group SYSNAME--FD workload group name is CASE SENSITIVEIF suser_sname() = ‘testuser'
SET @group = ‘testgroup‘ELSE
SET @group = ‘default’RETURN @GROUP
END
![Page 18: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/18.jpg)
Come funziona il Resource Governor• Si applica alle risorse gestite da Sql Server
– Le limitazioni sulla memoria si applicano solo alla RAM assegnata a SQL
– 100% della CPU è accessibile (eccetto Processor Affinity)• Percentuali di CPU…
– …Sono solo una linea guida– …Vengono implementate solo quando le risorse vengono contese
• Percentuali di memoria…– … Sono assolute– …vengono assegnate quando il pool viene creato– …va usato con cura
18
![Page 19: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/19.jpg)
Usare Resource Governor
• Posso cambiare dinamicamente I carichi di lavoro– In risposta a stimoli esterni– Basandomi su uno schedule
• Tracciare l’utilizzo del Resource Governor– I workload groups possono essere monitorati
20
![Page 20: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/20.jpg)
Suggerimenti
• Test– Verificare con cura le performance della UDF– Monitorare accuratamente in seguito ad una
modifica della UDF
• Debug– Usare le viste e I performance counter disponibili
21
![Page 21: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/21.jpg)
Autorizzazioni
• Autorizzazioni– CONTROL SERVER per la configurazione di
Resource Governor– VIEW SERVER STATE per visualizzare la
configurazione attiva
22
![Page 22: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/22.jpg)
Limitazioni di Resource Governor
• Solo Database Engine– Analysis Services, Reporting Services, etc. non
vengono gestiti• Single instance– Ogni istanza viene gestita individualmente
• Controls per CPU e Memoria– No I/O
![Page 23: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/23.jpg)
Monitorare Resource Governor
• Resource Governor – configurazione corrente e statistiche– sys.dm_resource_governor_configuration– sys.dm_resource_governor_resource_pools– sys.dm_resource_governor_workload_groups
• Resource Governor – valori memorizzati ma non è detto che siano ancora stati applicati– sys.resource_governor_configuration– sys.resource_governor_resource_pools– sys.resource_governor_workload_groups
25
![Page 24: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/24.jpg)
Monitorare Resource Governor
• DMV con informazioni su Resource Governor– sys.dm_exec_query_memory_grants – sys.dm_exec_query_resource_semaphores – sys.dm_exec_sessions – sys.dm_exec_requests – sys.dm_exec_cached_plans – sys.dm_os_memory_brokers– sys.dm_os_wait_stats
26
![Page 25: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/25.jpg)
Monitorare Resource Governor• Resource Governor - eventi– Errori e Warnings - CPU Threshold Exceeded Event
• Segnala una query che ha violato REQUEST_MAX_CPU_TIME_SEC
– Sessioni - PreConnect:Starting Event• Segnala l’inizio dell’esecuzione di un trigger di LOGON o della
funzione di classificazione
– Sessioni - PreConnect:Completed Event• Segnala la fine dell’esecuzione del LOGON trigger o della UDF
• Resource Governor - contatori– SQLServer:Resource Pool Stats– SQLServer:Workload Group Stats
27
![Page 26: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/26.jpg)
Resource governor : comandi utili
• ALTER RESOURCE GOVERNOR RECONFIGURE– Viene fatto in automatico dalla GUI
• ALTER RESOURCE GOVERNOR DISABLE– Vengono usati i valori di default, la UDF viene
ignorata• ALTER RESOURCE GOVERNOR RESET
STATISTICS
28
![Page 27: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/27.jpg)
Resource Governor
DEMO
29
![Page 28: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/28.jpg)
SOMMARIO
• I componenti di Resource Governor• Come funziona• Monitoraggio• Utilizzo
30
![Page 29: Sql Server 2008 Resource Governor](https://reader036.vdocument.in/reader036/viewer/2022062315/56815071550346895dbe6bda/html5/thumbnails/29.jpg)
Riferimenti utili
• Resource Governor su technet– http://msdn.microsoft.com/en-us/library/bb93386
6.aspx• Blog team sviluppo– http://blogs.technet.com/sqlos/archive/2007/12/
14/part-1-anatomy-of-sql-server-2008-resource-governor-cpu-demo.aspx
• Sql Load Generator su Codeplex– http://sqlloadgenerator.codeplex.com/
31