Utilizando a Visão de Gerenciamento Dinâmico sys.dm_os_performance_counters para obter informações em tempo real sobre memória no Microsoft SQL Server 2008 e R2.

Pessoal, bom dia.

Tudo bem? Todos já estão conhecendo e estudando o novo Microsoft SQL Server 2012?

Se você ainda não começou, não perca tempo, pois esta nova versão esta fantástica.

_______________________________________________________________________

Mas o artigo de hoje vou falar de um recurso criado a partir do Microsoft SQL Server 2008, chamado de Visões de Gerenciamento Dinâmico, mas especificamente da sys.dm_os_performance_counters, função que tomou o lugar da antiga sys.sysperfinfo existente no Microsoft SQL Server 2000 mas que ainda esta presente nas atuais versões e edições para manter compatibilidade.

A função de gerenciamento dinâmico tem como finalidade possibilitar ao Administrador de Banco de dados, obterem informações sobre a Saúde, Desempenho, Utilização, entre outras através, referentes ao SQL Server, através do uso de contadores existentes no Windows.

Estes chamados contadores de desempenho ou performance são recursos existentes no Microsoft Windows tanto para ambiente Servidor ou Desktop, presentes na ferramenta Performance ou Desempenho.

A ferramenta Performance(Perfmon) tem como finalidade realizar o monitoramento em tempo real dos recursos físicos e lógicos relacionados ao nosso sistema operacional, com também, a demais funcionalidades ou aplicativos instalados em nosso ambiente. A partir do SQL Server 2005 a Microsoft introduziu uma nova coletânea de contadores exclusivos para o SQL Server que podem ajudar em muito na identificação de problemas de desempenho, consumo de memória, falta de espaço em disco, paginação de dados, entre outros. A Figura 1, apresenta a ferramenta Perfmon e seus contadores básicos:

 

Figura 1 – Tela principal da ferramenta Perfmon(Performance Monitor).

Basicamente fazendo uso deste cenário que a sys.dm_os_performance_counters, trabalha em conjunto com o Microsoft Windows e o Microsoft SQL Server, tendo como finalidade, retorna uma linha por contador de desempenho mantido pelo servidor.

A seguir a Tabela 1, apresenta a relação de colunas retornadas após a execução da sys.dm_os_performance_counters:

Nome da coluna

Tipo de dados

Descrição

object_name nchar(128) Categoria para a qual este contador pertence.
counter_name nchar(128) Nome do contador.
instance_name nchar(128) Nome da instância específica do contador. Normalmente, contém o nome do banco de dados.
cntr_value bigint Valor atual do contador.
cntr_type int Tipo de contador conforme definido pela arquitetura de desempenho do Windows.

Tabela 1 – Conjunto de colunas retornadas pela sys.dm_os_performance_counters.

Agora que já sabemos qual é função desta função de gerenciamento dinâmico e como e a importância dos contadores existentes na ferramenta Perfmon, vamos começar a trabalhar com ela para posteriormente conseguirmos obter mais informações. A Figura 2 apresenta a relação de contadores, em destaque alguns contadores utilizados pelo Microsoft SQL Server:

Nem sempre os contadores instalados pelo Setup de instalação do Microsoft SQL Server, estão disponíveis ou acessíveis para a sys.dm_os_performance_counters, fazer a consulta a suas informações, para identificarmos se nosso ambiente esta funcionando, precisamos realizar um pequeno teste.

Para isso, vamos realizar a validação da quantidade de contadores existentes na ferramenta Perfmon, disponíveis para o Microsoft SQL Server, com base, no Código 1, apresentado a seguir:

– Código 1 – Consultando a Quantidade e Status dos Contadores –

Select count(*) from sys.dm_os_performance_counters

Observação: Se o valor de retorno for 0 linha, significa que os contadores de desempenho foram desabilitados. Você deve analisar o log da instalação e procurar o erro 3409, “Reinstale o arquivo sqlctr.ini nessa instância e verifique se a conta de logon da instância tem permissões corretas de Registro”. Ele indica que os contadores de desempenho não foram habilitados. Os erros imediatamente antes do erro 3409 devem indicar a causa da falha na habilitação dos contadores de desempenho.

Após a execução do Código 1, o Microsoft SQL Server deverá retornar a quantidade de contadores, como já destacado esta quantidade deve ser acima de 0. Neste caso, se você quiser saber as informações referentes a cada contador disponível para sua instância, execute o Código 2, apresentado a seguir:

– Código 2 – Consultando as informações sobre os Contadores instalados –

Select * from sys.dm_os_performance_counters

A Figura 3 apresenta a relação de contadores encontrados após a execução do Código 2.

Figura 3 – Relação de contadores disponíveis para a instância.

De posse deste conjunto de informações, sabendo que nossos contadores estão ativos e instalados corretamente, fica bem mais fácil começar a encontrar as informações sobre nosso ambiente, neste caso, mais especificamente sobre os indicadores de Memória relacionados ao SQL Server. Através do Código 3, podemos consultar a relação de contadores disponíveis para nossa instância.

– Código 3 – Obtendo a relação de contadores de Memória disponíveis para o Microsoft SQL Server –

Select * from sys.dm_os_performance_counters
Where object_name Like ‘%Memory%’

Ao encerrar a execução do Código 3, obtemos a relação de contadores disponíveis para se obter informações em tempo real sobre a Memória física existente em sua máquina. A Tabela 2 apresentada a seguir, destaca a relação de contadores de memória existentes para o SQL Server:

Categoria do Contador

Nome do Contador

MSSQL$SQLEXPRESS:Memory Manager Connection Memory (KB)
MSSQL$SQLEXPRESS:Memory Manager Granted Workspace Memory (KB)
MSSQL$SQLEXPRESS:Memory Manager Lock Memory (KB)
MSSQL$SQLEXPRESS:Memory Manager Lock Blocks Allocated
MSSQL$SQLEXPRESS:Memory Manager Lock Owner Blocks Allocated
MSSQL$SQLEXPRESS:Memory Manager Lock Blocks
MSSQL$SQLEXPRESS:Memory Manager Lock Owner Blocks
MSSQL$SQLEXPRESS:Memory Manager Maximum Workspace Memory (KB)
MSSQL$SQLEXPRESS:Memory Manager Memory Grants Outstanding
MSSQL$SQLEXPRESS:Memory Manager Memory Grants Pending
MSSQL$SQLEXPRESS:Memory Manager Optimizer Memory (KB)
MSSQL$SQLEXPRESS:Memory Manager SQL Cache Memory (KB)
MSSQL$SQLEXPRESS:Memory Manager Target Server Memory (KB)
MSSQL$SQLEXPRESS:Memory Manager Total Server Memory (KB)

Tabela 2 – Relação de Contadores de Memória disponíveis para o SQL Server.

Sabendo da relação de contadores, nosso cenário esta praticamente concluído, somente para ilustrar como podemos obter informações sobre alguns contadores, vou utilizar no Código 4, os Contadores SQL Cache Memory e Total Server Memory, ambos controlando valores na unidade de medida Kilobyte.

– Código 4 – Utilizando os Contadores SQL Cache Memory e Total Server Memory –

Select * from sys.dm_os_performance_counters
Where counter_name In (‘SQL Cache Memory (KB)’, ‘Total Server Memory (KB)’)

No conjunto de colunas retornadas pela sys.dm_os_performance_counters a coluna cntr_value apresenta o valor retornado por seus específicos contadores.

Observação: Para contadores por segundo, esse valor é cumulativo. O valor de taxa deve ser calculado pela amostragem do valor a intervalos de tempo curtos. A diferença entre qualquer dois valores de amostra sucessivos é igual à taxa para o intervalo de tempo usado.

Muito bem galera, vou finalizar aqui mais este artigo, espero que todos possam ter gostado e que estas informações possam ajudar no Monitoramento do seu ambiente.

Encontramos-nos em breve.

Até mais.

About these ads

6 comentários sobre “Utilizando a Visão de Gerenciamento Dinâmico sys.dm_os_performance_counters para obter informações em tempo real sobre memória no Microsoft SQL Server 2008 e R2.

  1. Fala Junior!
    Só uma pequena retificação: o sys.dm_os_performance_counters é na verdade uma View de Gerenciamento Dinâmico (DMV), e esses recursos estão disponíveis desde o SQL Server 2005, uma release antes.
    Isso aí, boa introdução! Valeu :)

    • Ivan, boa tarde.

      Obrigado por sua visita, mas acredito que você deve estar enganado a sys.dm_os_performance_counters não é um DMV é uma DMF, presente no SQL Server 2008.

      Basta consultar o Books OnLine: ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.pt/s10de_6tsql/html/3030c86a-0a74-4fed-ac0f-392e244cb965.htm

      Até mais.

      • Fala Junior!

        Se você conferir através de um:
        EXEC sp_help ‘sys.dm_os_performance_counters';
        GO

        O resultado indica o tipo do objeto como ‘View':
        dm_os_performance_counters sys view 2007-03-23 17:52:28.470

        E quando eu tento chamar a DMV como uma function, o seguinte erro é retornado:
        ‘Msg 215, Level 16, State 1, Line 3
        Parameters supplied for object ‘sys.dm_os_performance_counters’ which is not a function.’

        Infelizmente eu não tenho acesso ao BOL em pt-br aqui na minha máquina, mas vou instalar pra verificar o que diz nessa versão.
        :-)

      • E aí, Junior, tudo bem?

        Então, eu instalei e conferi o artigo do Books OnLine em Português que você passou, mas não vi onde especifica o sys.dm_os_performance_counters como function, no caso uma DMF, e sim como uma Exibição (View) de gerenciamento dinâmico (DMV).

        Fiquei curioso… Você poderia me informar o que te levou a crer que essa View fosse uma Function, ou onde estou enganado?

        Valeu, e boa tarde!

      • Ivan,

        Cara, sem problemas, o importante é entender o conceito.

        A sys.dm_os_performance_counters é tratada tanto como uma view de gerenciamento dinâmico como você destacou, e também pode ser interpretada como uma função dependendo da sua forma aplicação.

        Vale ressaltar que ela é uma DMV utilizada pelo SQLOS, sendo este, SQLOS é responsável por gerenciar os recursos do sistema operacional específicos do SQL Server.

        Até mais.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s