Casos do Dia a Dia – Lentidão ao limpar o histórico de backup na base MSDB
Olá Pessoal,
Hoje vou compartilhar com vocês uma experiência que tive essa semana realizando uma consultoria em um cliente.
Cenário:
Cliente com um ambiente pequeno e com a base MSDB com quase 3 Gb de tamanho, onde as duas tabelas abaixo estavam muito grandes:
1 2 |
select count (*) from backupfile -- 2 milhões de registros select count (*) from backupset -- 1 milhão de registros |
Existe uma procedure chamada sp_delete_backuphistory que limpa essas tabelas, mas para não excluir muitos registros de uma vez, tentei excluir os mais antigos que 360 dias:
1 2 3 4 5 |
DECLARE @d datetime SET @d = DATEADD(dd, -360, GETDATE()) exec msdb.dbo.sp_delete_backuphistory @d |
Contudo, esse comando demorou MUITO!!! Fiquei esperando 30 minutos e desisti.
Fui buscar alternativas e em um fórum vi alguém sugerindo a criação de alguns índices nessas tabelas.
Criei apenas o índice abaixo:
1 |
CREATE INDEX [Sk01_Backupset] ON [dbo].[backupset] ([media_set_id]) |
Ao executar novamente o delete com o mesmo parâmetro, agora ele rodou em 19 segundos.
É isso mesmo, de “30 minutos + desistência” para “19 segundos + sucesso”.
Feito isso, fui excluindo aos poucos até sobrar 2 meses de informações.
Ao final do processo, como esse índice é em uma tabela de sistema, eu excluí o índice para não ter problemas com o suporte do produto.
Com poucos dados o índice não é necessário, mas se sua tabela crescer muito, ele será de grande ajuda caso queira excluir dados.
Para finalizar, criei um job para manter a tabela com 60 dias de informações de histórico de backup.
Gostou dessa dica?
Cadastre seu e-mail para receber novos Posts e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.
Confira mais experiências do Dia a Dia de um DBA no meu Treinamento de Tarefas do Dia a Dia de um DBA.
Até a próxima.
Abraços,
Fabrício Lima
MCITP – Database Administrator
Consultor e Instrutor SQL Server
Trabalha com SQL Server desde 2006
Muito bom a dica. Parabéns!
Obrigado Jeferson.
Boa!