Dica – Encontrando Estatísticas de Tabelas e Índices desatualizadas através da função Stats_date() e Visão de Catálogo Sys.Stats.

Dica – Encontrando Estatísticas de Tabelas e Índices desatualizadas através da função Stats_date() e Visão de Catálogo Sys.Stats.

Anúncios

Olá galera, boa tarde.

Seguindo o ritmo dos últimos posts, estou de volta com mais uma dica. Hoje vou apresentar como podemos de forma fácil obter informações sobre Estatísticas de Tabelas e Índices no SQL Server, através da System Function Stats_Date() em conjunto com Visão de Catálogo Sys.Stats.

Alias, este é um dos meus assuntos prediletos relacionados à Performance no SQL Server, algo que pouquíssimos profissionais se preocupam em um momento de migração, manutenção ou até mesmo disponibilidade do ambiente.

E mais uma vez, eu me surpreendi com a quantidade de recursos que o SQL Server nos oferece, estou me referindo à função Stats_Date(), que eu particularmente não conhecia, como também, a visão de catálogo Sys.stats, ambos os recursos introduzidos a partir do SQL Server 2005.

Vou começar destacando a função Stats_Date(), criada especialmente para trabalhar com informações de Tabelas e Índices, mais especificamente no que diz respeito a valores estatísticos.

Em sua finalidade a Stats_Date(), trabalha como se fosse um coletor de dados, utilizando dois parâmetros de entrada:

  • Object_id: Id de identificação da tabela que será feita a coleta de dados estatísticos;
  • Stats_Id ou Index_ID: Id de identificação de estatísticas ou índice que será feita a coleta de dados estatísticos.

Com base nos valores repassados a função Stats_Date(), realiza o seu processo de coleta de dados, tendo como prioridade identificar o conjunto de estatísticas que apresentam a data mais recente. Nesta mesma linha de raciocínio, podemos também destacar a possibilidade deste conjunto de valores serem interpretados como valores atualizados ou desatualizados.

Outro elemento importante neste processo é a visão de catálogo Sys.Stats, recurso que possui a finalidade de apresentar uma linha de dados estatísticos para Tabelas, Visões ou Funções do Tipo Tabela.

Em resumo, o uso combinado da Stats_Date() e Sys.Stats, nos apresenta uma ótima ferramenta no processo de monitoramento, gerenciamento e ciclo de nossos ambientes de bancos de dados.

Muito bem, vamos então apresentar este código que pode nos ajudar em muito, como de costume foi dar nome aos bois, chamando este código de Relação de Estatísticas Desatualizadas. Segue abaixo o código:

— Relação de Estatísticas Desatualizadas —

SELECT name AS Estatística, STATS_DATE(object_id, stats_id) AS ‘Data’

FROM sys.stats

Where STATS_DATE(object_id, stats_id) >= Dateadd(M,-3, GetDate())

Order by Data Desc

 

Realizando uma simples análise, podemos observar que o código é bastante simples, na cláusula Where estamos realizando um filtro com base nos valores de Data, solicitando ao SQL Server retornar os registros referentes aos últimos três meses.

Além disso, como destacado anteriormente passamos dois valores de entrada para a função Stats_Date(), que realiza análise dos valores com base na visão de catálogo Sys.stats. Tanto a coluna object_id e stats_id são pertencentes à visão e seus valores interpretados pela função. Após o processamento deste código, o SQL Server apresentou o seguinte resultado, conforme apresenta a Figura 1:

Figura 1 – Relação de Estatísticas.

 

Legal, agora que já conhecemos este código, acredito que a minha dica se encerra aqui. Fica a vontade para personalizar este recurso e transformá-lo da forma que mais se aproxima da sua necessidade.

Espero que você tenha gostado e que as informações e exemplos possam ser úteis.

Um grande abraço.

Nos encontramos em breve.

Autor: Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP - Faculdade de Informática e Administração Paulista de São Paulo. Pós-Graduado em Gestão da Tecnologia da Informação Faculdade - ESAMC Sorocaba. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1995 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator - Administrador de Banco de Dados - SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, Triggers. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping. Atualmente trabalho como Administrador de Banco de Dados no FIT - Instituto de Tecnologia da Flextronics, como também, Consultor em Projetos de Tunnig e Performance para clientes, bem como, Professor Titular na Fatec São Roque. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Possuo titulação Oficial Microsoft MVP - SQL Server renovada desde 2007.

2 comentários em “Dica – Encontrando Estatísticas de Tabelas e Índices desatualizadas através da função Stats_date() e Visão de Catálogo Sys.Stats.”

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