{"id":6499,"date":"2016-09-15T09:15:28","date_gmt":"2016-09-15T12:15:28","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=6499"},"modified":"2016-09-15T14:17:00","modified_gmt":"2016-09-15T17:17:00","slug":"casos-do-dia-a-dia-lentidao-ao-limpar-o-historico-de-backup-na-base-msdb","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2016\/09\/15\/casos-do-dia-a-dia-lentidao-ao-limpar-o-historico-de-backup-na-base-msdb\/","title":{"rendered":"Casos do Dia a Dia &#8211; Lentid\u00e3o ao limpar o hist\u00f3rico de backup na base MSDB"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Hoje vou compartilhar com voc\u00eas uma experi\u00eancia que tive essa semana realizando uma consultoria em um cliente.<\/p>\n<p><strong>Cen\u00e1rio:<\/strong><\/p>\n<p>Cliente com um ambiente pequeno e com a base MSDB com quase 3 Gb de tamanho, onde as duas tabelas abaixo estavam muito grandes:<\/p>\n<pre class=\"lang:tsql decode:true\">select count (*) from backupfile -- 2 milh\u00f5es de registros\r\nselect count (*) from backupset  -- 1 milh\u00e3o  de  registros<\/pre>\n<p>Existe uma procedure chamada sp_delete_backuphistory que limpa essas tabelas, mas para n\u00e3o excluir muitos registros de uma vez, tentei excluir os mais antigos que 360 dias:<\/p>\n<pre class=\"lang:tsql decode:true\">DECLARE @d datetime\r\n\r\nSET @d = DATEADD(dd, -360, GETDATE())\r\n\r\nexec msdb.dbo.sp_delete_backuphistory @d<\/pre>\n<p><span style=\"color: #ff0000;\">Contudo, esse comando demorou MUITO!!! Fiquei esperando 30 minutos e desisti.<\/span><\/p>\n<p>Fui buscar alternativas e em um f\u00f3rum vi algu\u00e9m sugerindo a cria\u00e7\u00e3o de alguns \u00edndices nessas tabelas.<\/p>\n<p>Criei apenas o \u00edndice abaixo:<\/p>\n<pre class=\"lang:tsql decode:true\">CREATE INDEX [Sk01_Backupset] ON [dbo].[backupset] ([media_set_id])<\/pre>\n<p>Ao executar novamente o delete com o mesmo par\u00e2metro, agora ele rodou em <strong>19 segundos<\/strong>.<\/p>\n<p>\u00c9 isso mesmo, de <strong>&#8220;30 minutos + desist\u00eancia&#8221;<\/strong> para <strong>&#8220;19 segundos + sucesso&#8221;<\/strong>.<\/p>\n<p>Feito isso, fui excluindo aos poucos at\u00e9 sobrar 2 meses de informa\u00e7\u00f5es.<\/p>\n<p><strong><span style=\"color: #ff0000;\">Ao final do processo<\/span><\/strong>, como esse \u00edndice \u00e9 em uma tabela de sistema, <span style=\"color: #ff0000;\"><strong>eu exclu\u00ed o \u00edndice para n\u00e3o ter problemas com o suporte do produto<\/strong><\/span>.<\/p>\n<p>Com poucos dados o \u00edndice n\u00e3o \u00e9 necess\u00e1rio, mas se sua tabela crescer muito, ele ser\u00e1 de grande ajuda caso queira excluir dados.<\/p>\n<p>Para finalizar, criei um job para manter a tabela com 60 dias de informa\u00e7\u00f5es de hist\u00f3rico de backup.<\/p>\n<p><b>Gostou dessa dica?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Confira mais experi\u00eancias do Dia a Dia de um DBA no meu <a href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>.<\/p>\n<p>At\u00e9 a pr\u00f3xima.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, Hoje vou compartilhar com voc\u00eas uma experi\u00eancia que tive essa semana realizando uma consultoria em um cliente. Cen\u00e1rio: Cliente com um ambiente pequeno e com a base MSDB com quase 3 Gb de tamanho, onde as duas tabelas abaixo estavam muito grandes: select count (*) from backupfile &#8212; 2 milh\u00f5es de registros select [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[3,6,942,33,280],"tags":[1355,302,1348,1349,1350,1353,1351,1352,1354],"class_list":["post-6499","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-sql-server","category-virtual-pass-br","tag-backupfile","tag-backupset","tag-historico-backup","tag-limpar-historico-de-backup","tag-limpeza-msdb","tag-msdb","tag-msdb-grande","tag-problema-msdb","tag-sp_delete_backuphistory"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/6499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=6499"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/6499\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=6499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=6499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=6499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}