otrdiena, 2012. gada 7. augusts

Resource Governor: statistika

Kā jau minēju rakstā Resource Governor: CPU slodzes sadalīšana, Resource Governor (RG) ir pieejams sākot ar SQL Server 2008, Enterprice / Developer redakcijās un ir domāts CPU un atmiņas resursu sadalīšanai starp konekcijām vienas instances ietvaros.

RG savas darbības laikā uzkrāj informāciju par piešķirto resursu apjomu. Uzkrātā informācija ļauj atbildēt, piemēram, uz jautājumu "Cik % CPU patērē lietojums X?" vai "Cik milisekundes ilgs ir vidējais pieprasījums no lietojuma Y?"

Uzkrātā informācija

Svarīgākā RG uzkrātā informācija ir apskatāma divos DMV (Resource Governor Related DMV's):
Select * From sys.dm_resource_governor_workload_groups
Select * From sys.dm_resource_governor_resource_pools
Šajos DMV ir kolonna "statistics_start_time", kas norāda datumu un laiku, no kura dati ir uzkrāta. Statistiku sāk uzkrāt no jauna pēc katras SQL Server pārstartēšanas reizes. Veicot RG konfigurācijas izmaiņas arī statistika var tikt pārstartēta. Un galu galā- var dod komandu, lai statistika tiktu uzkrāta no jauna:
ALTER RESOURCE GOVERNOR RESET STATISTICS;

Interesanti pārskati

RG grupas vidējais vaicājuma izpildes laiks un RG grupas CPU procentuālā slodze:
Select group_id, name group_name,
    Cast(Case When total_request_count = 0 Then 0 Else total_cpu_usage_ms/(total_request_count * 1.00) End as decimal(18,2)) per_request_ms,
    Cast((total_request_count* 1.)/DATEDIFF(Second, statistics_start_time, GETDATE()) as decimal(18,2)) calls_per_sec,
    total_request_count,
    Cast(total_request_count / Cast(Sum(total_request_count) Over () as decimal(18,5))* 100 as decimal(18,2))  [% requests],
    total_cpu_usage_ms,
    Cast(total_cpu_usage_ms / Cast(Sum(total_cpu_usage_ms) Over () as decimal(18,5))* 100 as decimal(18,2))  [% CPU time],
    statistics_start_time
From sys.dm_resource_governor_workload_groups 
Vaicājumi un to atbilstošā resursu grupa, kas šobrīd tiek izpildīti SQL Server:
Select g.name group_name, s.host_name, s.program_name, s.login_name, s.original_login_name,
    s.status session_statuss, r.status request_statuss, r.command,
    cast('<?SQL ' + char(13) + sh.text + char(13) + ' ?>' as xml) sqlText,
    cast(ph.query_plan as xml) queryPlan
From sys.dm_exec_sessions s
    Left Join sys.resource_governor_workload_groups g on s.group_id = g.group_id
    Left Join sys.dm_exec_requests r on s.session_id = r.session_id
    Outer Apply sys.dm_exec_text_query_plan(plan_handle, 0, -1) ph
    Outer Apply sys.dm_exec_sql_text(sql_handle) sh
Order By g.group_id desc;

Nav komentāru:

Komentāra publicēšana