Casos do Dia a Dia – Exclusão de um índice grande e pouco utilizado
Muitos de vocês já utilizaram a dmv sys.dm_db_index_usage_stats para verificar a utilização e atualização dos índices de uma tabela. Também sabemos que essa dmv tem seus dados reiniciados quando o serviço do SQL Server é reiniciado...
Fala pessoal,
CREATE TABLE [dbo].[Historico_Utilizacao_Indices](
[Id_Historico_Utilizacao_Indices] [int] IDENTITY(1,1) NOT NULL,
[Dt_Historico] [datetime] NULL,
[Nm_Servidor] [varchar](30) NULL,
[Nm_Database] [varchar](30) NULL,
[Nm_Tabela] [varchar](50) NULL,
[Nm_Indice] [varchar](50) NULL,
[User_Seeks] [int] NULL,
[User_Scans] [int] NULL,
[User_Lookups] [int] NULL,
[User_Updates] [int] NULL,
[Ultimo_Acesso] [datetime] NULL )
SELECT getdate(), @@SERVERNAME, db_name(db_Id()), o.Name, i.name, s.user_seeks,s.user_scans,s.user_lookups, s.user_Updates, isnull(s.last_user_seek,isnull(s.last_user_scan,s.last_User_Lookup)) Ultimo_acesso
FROM sys.dm_db_index_usage_stats s
join sys.indexes i on i.object_id = s.object_id and i.index_id = s.index_id
join sys.sysobjects o on i.object_id = o.id
WHERE s.database_id = db_id()
ORDER BY o.Name, i.name, s.index_id
Para armazenar as informações, criei um job que roda essa query de INSERT para cada database que eu defini guardar os históricos.
Show de bola, diminuí uma operação de manutenção de um índice em uma tabela muito utilizada.
Resultado, como não dava para alterar a consulta, tive que recriar o índice na mesma noite.
Fabrício França Lima
MCITP – Database Administrator
Twitter: @fabriciodba
http://fabriciodba.wordpress.com/
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo