Comunidade, bom dia.
Mas que calor esta fazendo estes dias!!!!
Meu deus, algo que atrapalha em muito a concentração e produtividade, mesmo assim, a vida continua e temos que fazer o melhor que podemos.
Pois bem, no Shor Scripts deste mês, vou destacar especificamento códigos relacionados a uma das maiores novidades lançadas em conjunto com o SQL Server 2008, isso já vou alguns anos mas que é muito útil.
Estou me referente ao Resource Governor, uma tecnologia que possibilidade o controle da carga de trabalho por parte do SQL Server durante a execução de determinados procedimentos que venham a exigir um custo de processamento mais elevado ou específico.
São 7 códigos de exemplo que demonstram como podemos fazer o processo de Configuração, Uso e Obtenção de Informações do Resource Governor, segue abaixo a relação de Shor Scripts:
1 – Exemplo – Resource Governor – Configuração:
– Criando os Pools de Conexão –
Create RESOURCEPOOL PoolMarketingAdHoc
With
(
MAX_CPU_Percent = 20,
MIN_CPU_Percent = 5,
MAX_Memory_Percent = 30,
MIN_Memory_Percent = 10
)
CREATE RESOURCEPOOL PoolVP
With
(
MAX_CPU_Percent = 25,
MIN_CPU_Percent = 5
)
– Criando Grupos de WorkLoad –
CREATE WORKLOADGROUP GroupMarketing Using PoolMarketingAdHoc
CREATE WORKLOADGROUP GroupAdHoc
With (Importance = Medium)Using PoolMarketingAdHoc
CREATE WORKLOADGROUP GroupVP
With (Importance = Low)Using PoolVP
Go
– Criando logins para separar os usurios dentro de diferentes grupos –
CREATE LOGIN UserMarketing WithPassword=‘UserMarketingPwd’,Check_Policy=Off
CREATE LOGIN UserAdHoc WithPassword=‘UserAdHocPWD’,Check_Policy=Off
CREATE LOGIN UserVP WithPassword=‘UserVPPwd’,Check_Policy=Off
– Criando Function para gerenciamento do pool –
Create FUNCTION [dbo].[Classifier_ConectionPool]()
RETURNS SYSNAME
WITH SCHEMABINDING
BEGIN
DECLARE @WorkGrupo VarChar(32)
SET @WorkGrupo =‘default’
If‘UserVP’=SUSER_SNAME()
SET @WorkGrupo =‘GroupVP’
ElseIf‘UserMarketing’=SUSER_SNAME()
SET @WorkGrupo =‘GroupMarketing’
ElseIf‘UserAdHoc’=SUSER_SNAME()
SET @WorkGrupo =‘GroupAdHoc’
RETURN @WorkGrupo
End
Go
– Alterando a configurao do Resource Governor –
Alter ResourceGovernor
With (Classifier_Function = dbo.classifier_conectionpool)
Go
– Aplicando as reconfiguraes no Resource Governor –
Alter ResourceGovernorReconfigure
Go
2. Exemplo – Obtendo o nome da Classifier Function:
SELECT object_schema_name(classifier_function_id)AS [schema_name],
object_name(classifier_function_id)AS [function_name]
FROM sys.dm_resource_governor_configuration
3 – Exemplo – DMV’s relacionadas so Resource Governor:
SELECT * FROMSYS.DM_RESOURCE_GOVERNOR_WORKLOAD_GROUPS
SELECT * FROMSYS.DM_RESOURCE_GOVERNOR_RESOURCE_POOLS
SELECT * FROMSYS.DM_RESOURCE_GOVERNOR_CONFIGURATION
4 – Exemplo – Resource Governor – Utilizando – Select:
Create Database Teste
Go
Use Teste
Go
Create Table Teste
( Codigo Int,
Descricao Varchar(100)
)
Go
Create User UserVP fromLogin UserVP
Create User UserAdHoc fromLogin UserAdHoc
Create User UserMarketing fromLogin UserMarketing
Grant Select on object:: teste.dbo.teste to uservp
Grant Select on object:: teste.dbo.teste to useradhoc
Grant Select on object:: teste.dbo.teste to userMarketing
Go
Grant Insert on object:: teste.dbo.teste to uservp
Grant Insert on object:: teste.dbo.teste to useradhoc
Grant Insert on object:: teste.dbo.teste to userMarketing
Go
Execute As Login=‘UserVP’
SELECT Codigo,Descricao
FROM Teste
GO
Execute As Login=‘UserAdHoc’
SELECT Codigo,Descricao
FROMTeste
GO
– Permitindo troca de usurio de forma impersonate –
Grant Impersonate OnUser:: UserVP To UserAdHoc
Go
– Resetando as conexes em uso no Contexto de Banco de Dados –
Revert
Go
– Trocando o Contexto de Conexão para o Usuário UserVP –
Execute As Login=‘UserVP’
Go
Insert Into teste defaultvalues
Go 100000
– Trocando o Contexto de Conexão para o Usuário UserMarteking –
Execute As Login=‘UserMarketing’
Go
Insert Into teste defaultvalues
Go 100000
– Trocando o Contexto de Conexão para o Usuário UserAdHoc –
Execute As Login=‘UserAdHoc’
Go
Insert Into teste defaultvalues
Go 100000
5 – Exemplo – Obtendo informações sobre as sessões conectadas por Workloads Groups:
SELECT s.group_id,
CAST(g.name as nvarchar(20)),
s.session_id, s.login_time,
CAST(s.host_name as nvarchar(20)),
CAST(s.program_nameASnvarchar(20))
FROM sys.dm_exec_sessions s INNER JOIN sys.dm_resource_governor_workload_groups g
ON g.group_id = s.group_id
ORDER BY g.name
GO
6 – Exemplo – Obtendo informações sobre as Solicitações de Transações por WorkLoad Groups:
SELECT r.group_id,
g.name,
r.status,
r.session_id,
r.request_id,
r.start_time,
r.command,
r.sql_handle,
t.text
FROM sys.dm_exec_requests r INNER JOIN sys.dm_resource_governor_workload_groups g
ON g.group_id = r.group_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
ORDER BY g.name
GO
7 . Exemplo – Resource Governor – Solicitações em Execução por Classificador:
– Exemplo 1 –
SELECT s.group_id,
g.name,
s.session_id,
s.login_time,
s.host_name,
s.program_name
FROM sys.dm_exec_sessions s INNER JOIN sys.dm_resource_governor_workload_groups g
ON g.group_id = s.group_id
AND ‘preconnect’= s.status
ORDER BY g.name
GO
– Exemplo 2 –
SELECT r.group_id,
g.name,
r.status,
r.session_id,
r.request_id,
r.start_time,
r.command,
r.sql_handle,
t.text
FROM sys.dm_exec_requests r INNER JOIN sys.dm_resource_governor_workload_groups g
ON g.group_id = r.group_id
AND ‘preconnect’= r.status
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
ORDER BY g.name
GO
Estão aqui os Short Scripts relacionados ao Resource Governor, espero que vocês gostem, usem a vontande, melhorem os exemplos, passem para seus contatos.
Mais uma vez obrigado por sua visita.
Nos encontramos em breve.
Até mais.
Pingback: Material de Apoio – SQL Server | Alex Souza