Eu devo utilizar as DMV?

Você já deve ter ouvido falar nas DMV, mas voce já utilizou alguma?

Primeiramente, DMV é o nome mais comum para views (Dynamic Management Views) e functions (Dynamic Management Functions). DMVs são metadados que ficam armazenadas no schema sys, iniciam com sys.dm_* e permitem explorar o comportamento interno do SQL Server com comando SELECT.

As DMVs foram implementadas no SQL Server 2005 e hoje já são popularmente conhecidas, mas eu ainda vejo algumas pessoas lutarem contra elas e continuarem utilizando formas antigas de recuperar informações internas do SQL Server, por exemplo: Utilizar a stored procedure de sistema SP_WHO ou SP_WHO2 para trazer informações do que esta acontecendo e quais processos estão sendo executados na instancia.

Essas procedures  de sistemas são uteis e trazem algumas informações que você com certeza pode identificar o que está acontecendo em seu ambiente porem, na minha visão, elas tem limitações extremas e trazem poucas informações.

Com as DMVs você pode ser mais especifico em procurar um problema ou informação, não dependendo de um conjunto de resultado pré-estabelecido que não pode ser modificado.

As DMVs contem muitas informações adicionais que não fazem parte de procedures de sistemas e com detalhes riquíssimos onde podemos cruzar informações entre varias DMVs e obter um diagnostico preciso sobre o que você procura.

Em uma breve conversa com alguns DBAs da minha equipe, percebi  que o fato de que alguns deles não usarem as DMVs é por falta de conhecimento e por “preguiça”… Sim a comodidade de escrever poucas palavras e não escrever um SELECT é o principal ponto que encontrei…

Mas vamos lá… Por que eu devo utilizar as DMVs?

Na minha opinião é pelo fato delas conterem muitas informações relevantes para N tipos de situações, seja uma simples consulta de propriedades até um diagnostico completo de  problemas. Com as DMVs a facilidade de informação está ao nosso lado, então porque desperdiçar?

Conhecer todas as DMVs é um desafio, mas basta começar à conhece-las que você irá se acostumar facilmente e isso acontecerá porque as DMVs estão categorizadas em grupos específicos baseados nas áreas que a informação é exposta.

Algumas dessas áreas são:

dm_exec_* 

Nessa sessão você tem informação relacionada a execução de código e conexão associada.  Por exemplo: sys.dm_exec_session voce tem informação sobre as sessões existentes na instancia.

Aqui vale a pena um atenção especial! Na minha opinião essa sessão deve ser bem explorada pois tudo o que esta sendo executado na sua instancia pode ser encontrado aqui.

dm_db_*

Nessa sessão você tem informação sobre detalhes do database e seus objetos. Por exemplo: sys.dm_db_missing_index_details você tem informações detalhadas sobre índices ausentes

dm_io_*

Nessa sessão voce tem informação sobre atividade e I/O. Por exemplo: sys.dm_io_pending_io_requests retorna uma linha para cada solicitação de I/O pendente.

dm_os_*

Nessa sessão você tem informação em baixo nível do sistema. Por exemplo: sys.dm_os_schedulers que retorna uma linha para cada scheduler.

dm_tran_*

Nesse sessão você tem informação sobre transações corrente. Por exemplo: sys.dm_tran_active_transactions você tem informação sobre transações da instância.

E assim por diante!! Para obter mais informações sobre as DMVs acesse o link: http://technet.microsoft.com/en-us/library/ms188754.aspx

Complemento:

A Microsoft SQL Server DMV/DMF Cheat-Sheet

SQL Server 2008 System Views poster is now available for download!

O link abaixo achei super interessante, pois monstra uma forma diferente de visualizar as DMVs!!!

The SQL Server 2012 Periodic Table of Dynamic Management Objects

Maníaco, entusiasta, fascinado, fanático por SQL Server e nas horas vagas um DBA que adora o que faz! Também possui certificações como: MCT, MCSE - Data Management and Analystics, MCSA - SQL Server 2014/2012

Responda