Usuário com melhor resposta
Como saber qual índice não está sendo utilizado numa tabela ?

Pergunta
-
Prezados,
Estou com uma dúvida em relação ao SQL SERVER que é a seguinte :
- Como saber quais índices de determinada base de dados não está sendo mais acessado. Sei que,a princípio, existem formas rápidas e fáceis de se saber isso a partir de consultas feitas a partir da DMV sys.dm_db_index_usage_stats cruzando com as informações de sys.indexes, porém o problema é que a DMV sys.dm_db_index_usage_stats é sempre reinicializada a cada "startup" do SQL SERVER e as informações constantes lá podem não ser fiéis à realidade, no caso de eu fazer a consulta poucos dias após o "startup" do SQL SERVER e um ou outro índice (geralmente usado) ainda não tiver sido utilizado.
Neste caso, que tipo de consulta utilizar ? Que ferramentas usar para que eu possa ter, senão certeza absoluta, mas praticamente a certeza de que determinado índice realmente não está sendo utilizado.
Isso é importante fazer, pois eliminar índices inúteis podem impactar positivamente na performance das operações de I/O, visto que a atualização do mesmo seria mais um tempo gasto sem necessidade.Agradeço antecipadamente a todos por quaisquer colaboração.
José Luizquarta-feira, 13 de julho de 2011 21:44
Respostas
-
José Luiz,
A forma de verificar se um índice está ou não sendo utilizado é realmente através da DMV sys.dm_db_index_usage_stats e há esse "problema" dela coletar dados a partir do start do serviço do SQL.
O que você poderia implementar para evitar erros ao retirar um índice seria criar uma rotina para coletar os dados da index_usage_stats, e periodicamente você verifica se determinado índice está sendo usado ou não. Dessa forma, você irá conseguir armazenar dados históricos e será mais preciso na hora de excluir um índice não utilizado por exemplo.
Espero ter ajudado.
Att.
Erickson Ricci
Microsoft MCP, MCTS SQL Server 2005, 2008
Visite o meu blog: http://ericksonricci.wordpress.com
Me siga no twitter: @EricksonRicci
LinkedIN: http://br.linkedin.com/in/ericksonricci
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**- Sugerido como Resposta Erickson F. D. Ricci terça-feira, 19 de julho de 2011 12:33
- Marcado como Resposta Richard Juhasz sexta-feira, 29 de julho de 2011 19:17
sexta-feira, 15 de julho de 2011 15:33
Todas as Respostas
-
José Luiz,
A forma de verificar se um índice está ou não sendo utilizado é realmente através da DMV sys.dm_db_index_usage_stats e há esse "problema" dela coletar dados a partir do start do serviço do SQL.
O que você poderia implementar para evitar erros ao retirar um índice seria criar uma rotina para coletar os dados da index_usage_stats, e periodicamente você verifica se determinado índice está sendo usado ou não. Dessa forma, você irá conseguir armazenar dados históricos e será mais preciso na hora de excluir um índice não utilizado por exemplo.
Espero ter ajudado.
Att.
Erickson Ricci
Microsoft MCP, MCTS SQL Server 2005, 2008
Visite o meu blog: http://ericksonricci.wordpress.com
Me siga no twitter: @EricksonRicci
LinkedIN: http://br.linkedin.com/in/ericksonricci
**Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
**Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**- Sugerido como Resposta Erickson F. D. Ricci terça-feira, 19 de julho de 2011 12:33
- Marcado como Resposta Richard Juhasz sexta-feira, 29 de julho de 2011 19:17
sexta-feira, 15 de julho de 2011 15:33 -
Ok, Erickson,
Vou estudar sua proposta e tentar implementá-la de alguma forma.
Obrigado pela sugestão.
José Luizterça-feira, 19 de julho de 2011 11:49