{"id":194,"date":"2010-12-19T11:03:47","date_gmt":"2010-12-19T13:03:47","guid":{"rendered":"http:\/\/fabriciodba.wordpress.com\/?p=194"},"modified":"2016-07-23T13:21:58","modified_gmt":"2016-07-23T16:21:58","slug":"casos-do-dia-a-dia-voce-sabia-que-um-arquivo-de-log-do-sql-server-se-fragmenta","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2010\/12\/19\/casos-do-dia-a-dia-voce-sabia-que-um-arquivo-de-log-do-sql-server-se-fragmenta\/","title":{"rendered":"Casos do Dia a Dia &#8211; Voc\u00ea sabia que um arquivo de Log do SQL Server se fragmenta?"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>Vou ser sincero com voc\u00eas, at\u00e9 pouco tempo eu n\u00e3o tinha a menor id\u00e9ia que um arquivo de log do SQL Server se fragmentava. Nunca tinha lido\u00a0sobre o assunto. Entretanto, para isso que servem os mais 100 Blogs de SQL Server cadastrados no meu google reader e os v\u00e1rios profissionais SQL Server que sigo no twitter e que tamb\u00e9m\u00a0divulgam dicas de excelentes artigos, whitepapers e etc.<\/p>\n<p>Pouco tempo atr\u00e1s, algu\u00e9m &#8220;twitou&#8221; esse excelente artigo <a href=\"http:\/\/www.sqlskills.com\/BLOGS\/KIMBERLY\/post\/8-Steps-to-better-Transaction-Log-throughput.aspx\" target=\"_blank\">8 Steps to better Transaction Log throughput<\/a>.<\/p>\n<p>Nesse artigo Kimberly L. Tripp\u00a0(<a href=\"http:\/\/www.sqlskills.com\/BLOGS\/KIMBERLY\/\" target=\"_blank\">Blog<\/a>|<a href=\"http:\/\/twitter.com\/KimberlyLTripp\" target=\"_blank\">Twitter<\/a>) da uma s\u00e9rie de dicas para serem aplicadas nos arquivos de log do SQL Server.\u00a0 Uma dessas dicas (a de n\u00famero oito) \u00e9 para checar e corrigir a fragmenta\u00e7\u00e3o interna desses arquivos. Ela ainda disse que essa dica resolveu um problema de um cliente na Turquia.<\/p>\n<p>Caso o seu arquivo de log tenha sofrido muitos autogrowths, ele pode ficar internamente fragmentado. O arquivo de log do SQL Server \u00e9 dividido em pequenos peda\u00e7os chamados VLF(Virtual Log Files) que crescem a medida que seu arquivo de log cresce. Segundo Kimberly, geralmente, a maioria dos arquivos de logs devem ter somente entre 20\u00a0e 30 VLF. 50 ainda \u00e9 aceit\u00e1vel dependendo do tamanho do seu arquivo de log.<\/p>\n<p>Um n\u00famero excessivo de\u00a0VLF pode causar um impacto negativo em todas as atividades do transaction log e al\u00e9m disso, ainda\u00a0pode ocorrer uma degrada\u00e7\u00e3o da performance enquanto um backup do log est\u00e1 sendo executado. Para conferir quantos VLF voc\u00ea tem\u00a0em uma database, basta verificar o n\u00famero de linhas retornadas pelo comando DBCC LOGINFO conforme a figura abaixo:<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2010\/12\/dbcc-loginfo.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-195\" title=\"DBCC LOGINFO\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2010\/12\/dbcc-loginfo.jpg?w=300\" alt=\"\" width=\"300\" height=\"134\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2010\/12\/dbcc-loginfo.jpg 401w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2010\/12\/dbcc-loginfo-300x134.jpg 300w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Nesse caso, o arquivo de log dessa database\u00a0possui 4 VLFs.<\/p>\n<p>Seguindo o procedimento do artigo, realizei os seguintes passos para desfragmentar o arquivo de log:<\/p>\n<p>1 &#8211; Esperei por um per\u00edodo de pouco movimento e limpei o transaction log realizando um backup do mesmo. Caso voc\u00ea\u00a0utilize o recovery model SIMPLE, voc\u00ea n\u00e3o precisa realizar um backup do log, ao inv\u00e9s disso, voc\u00ea limpar\u00e1 o transaction log rodando um CHECKPOINT.<\/p>\n<p>BACKUP LOG databasename TO devicename<\/p>\n<p>2 &#8211; Realizei um Shrink no log para que ele ficasse com o menor tamanho poss\u00edvel (por isso que ele \u00e9 limpo no passo 1).<\/p>\n<p>DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY)<\/p>\n<p>3 &#8211; Alterei o arquivo de log da database para um tamanho apropriado onde ele necessite crescer apenas em alguns casos raros.<\/p>\n<p>ALTER DATABASE databasename<br \/>\nMODIFY FILE<br \/>\n( NAME = transactionloglogicalfilename,<br \/>\nSIZE = newtotalsize )<\/p>\n<p>No meu ambiente eu possu\u00eda uma database com 275 VLF e as maiores estavam todas com mais de 150 VLF. Ap\u00f3s realizar os passos acima, todas as databases est\u00e3o com menos de 20 VLF, sendo que dentre elas, mantenho arquivos de log com 4 GB devido a algumas opera\u00e7\u00f5es e manuten\u00e7\u00f5es que ocorrem durante a madrugada.<\/p>\n<p>Com rela\u00e7\u00e3o a performance, em um dos meus servidores, fa\u00e7o um backup do log a cada 7 minutos para minhas 5 principais databases, com isso, possuo um grande n\u00famero de backups do log. Como eu monitoro toda <a title=\"passo-a-passo-para-encontrar-as-querys-mais-demoradas-do-banco-de-dados-parte-1\/\" href=\"https:\/\/www.fabriciolima.net\/blog\/2010\/06\/05\/passo-a-passo-para-encontrar-as-querys-mais-demoradas-do-banco-de-dados-parte-1\/\" target=\"_blank\">query que demora mais de 3 segundos<\/a>, constantemente a query que fazia backup do log demorava para ser executada e era armazenada no meu log. Ap\u00f3s a realiza\u00e7\u00e3o dos passos descritos\u00a0acima, \u00e9 muito raro um backup do log\u00a0 entrar nesse trace. Essa melhora foi bem percept\u00edvel no meu ambiente.<\/p>\n<p>Ent\u00e3o, cabe a\u00a0voc\u00eas verificarem a quantidade de VLF de suas databases pois \u00e9 um procedimento bem simples.<\/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>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","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Vou ser sincero com voc\u00eas, at\u00e9 pouco tempo eu n\u00e3o tinha a menor id\u00e9ia que um arquivo de log do SQL Server se fragmentava. Nunca tinha lido\u00a0sobre o assunto. Entretanto, para isso que servem os mais 100 Blogs de SQL Server cadastrados no meu google reader e os v\u00e1rios profissionais SQL Server que [&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":"","jetpack_post_was_ever_published":false},"categories":[3,6,280],"tags":[69,118,23,115,117,114,27,63,116,40,112,113],"class_list":["post-194","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-virtual-pass-br","tag-administracao-de-banco-de-dados","tag-backup-log","tag-dba","tag-dbcc-loginfo","tag-dbcc-shrinkfile","tag-fragmentacao","tag-internals","tag-performance","tag-transaction-log","tag-tuning","tag-virtual-log-files","tag-vlf"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":3200,"url":"https:\/\/fabriciolima.net\/blog\/2015\/01\/15\/casos-do-dia-a-dia-transaction-log-nao-diminui-nivel-hard\/","url_meta":{"origin":194,"position":0},"title":"Casos do Dia a Dia: Transaction Log n\u00e3o diminui &#8211; N\u00edvel Hard","author":"Fabr\u00edcio Lima","date":"15 de janeiro de 2015","format":false,"excerpt":"Ol\u00e1 Pessoal, Recebi um alerta de LOG FULL em um dos clientes que realizo um monitoramento di\u00e1rio do BD com minha Consultoria SQL Server. At\u00e9 a\u00ed, nada de mais. Seria um atendimento de rotina onde provavelmente o Log n\u00e3o era limpo devido a algum problema no Backup de Log ou\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/01\/ArtigoVLF.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":6981,"url":"https:\/\/fabriciolima.net\/blog\/2017\/01\/12\/alerta-monitorando-o-tamanho-do-transaction-log-no-sql-server\/","url_meta":{"origin":194,"position":1},"title":"Alerta: Monitorando o tamanho do Transaction Log no SQL Server","author":"Fabr\u00edcio Lima","date":"12 de janeiro de 2017","format":false,"excerpt":"Ol\u00e1 Pessoal, Hoje vou compartilhar com voc\u00eas um script pronto para voc\u00ea monitorar o Transaction Log do seu SQL Server. Cen\u00e1rio real do Dia a Dia: J\u00e1 perdi as contas de quantos clientes j\u00e1 me procuraram com uma base de dados parada e com uma mensagem de Transaction Log FULL.\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"alertalogfull","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":7653,"url":"https:\/\/fabriciolima.net\/blog\/2017\/04\/03\/video-qual-a-diferenca-entre-o-recovery-model-simple-e-o-recovery-model-full\/","url_meta":{"origin":194,"position":2},"title":"V\u00eddeo: Qual a diferen\u00e7a entre o Recovery Model SIMPLE e o Recovery Model FULL?","author":"Fabr\u00edcio Lima","date":"3 de abril de 2017","format":false,"excerpt":"Fala Pessoal, O objetivo do v\u00eddeo de hoje \u00e9\u00a0mostrar a diferen\u00e7a entre o recovery SIMPLE e o recovery FULL. Essa \u00e9 uma das d\u00favidas mais comuns\u00a0que vejo nos f\u00f3runs, palestras e treinamentos. Principalmente para quem est\u00e1 come\u00e7ando no mundo SQL Server. Segue o v\u00eddeo com a explica\u00e7\u00e3o: https:\/\/www.youtube.com\/watch?v=cXQvhTKOE8o Segue o\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/04\/RecoverySimpleFull-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/04\/RecoverySimpleFull-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/04\/RecoverySimpleFull-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1070,"url":"https:\/\/fabriciolima.net\/blog\/2011\/12\/05\/casos-do-dia-a-dia-e-mails-de-eventos-com-erros-criticos-no-banco-de-dados\/","url_meta":{"origin":194,"position":3},"title":"Casos do Dia a Dia &#8211; E-mails de eventos com erros cr\u00edticos no Banco de Dados","author":"Fabr\u00edcio Lima","date":"5 de dezembro de 2011","format":false,"excerpt":"Fala Pessoal, Na semana passada passei por uma experi\u00eancia que gostaria de compartilhar aqui no Blog. Em meus servidores SQL Server, eu configuro o envio de alertas quando acontece algum erro com severidade entre 20 e 25 (cr\u00edticos). Um certo dia, precisei reiniciar o servi\u00e7o do SQL Server. Como n\u00e3o\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/12\/EventLogCorrupt.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/12\/EventLogCorrupt.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/12\/EventLogCorrupt.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/12\/EventLogCorrupt.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":11647,"url":"https:\/\/fabriciolima.net\/blog\/2020\/02\/29\/monitoramento-no-sql-server-o-que-fazer-quando-receber-um-alerta-de-log-full\/","url_meta":{"origin":194,"position":4},"title":"Monitoramento no SQL Server &#8211; O que fazer quando receber um alerta de Log FULL?","author":"Fabr\u00edcio Lima","date":"29 de fevereiro de 2020","format":false,"excerpt":"Fala Pessoal, Em Setembro do ano passado liberei uma nova vers\u00e3o dos meus scripts para a cria\u00e7\u00e3o de 40 alertas no SQL Server: https:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/ Legal Fabr\u00edcio, mas o que eu fa\u00e7o quando receber esses Alertas? Esse \u00e9 o segundo v\u00eddeo para ajudar a dar essa resposta para voc\u00eas. Nesse v\u00eddeo\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/T3C11DLqyus\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":686,"url":"https:\/\/fabriciolima.net\/blog\/2011\/05\/22\/criando-mais-de-um-arquivo-de-log-melhora-a-performance-do-sql-server\/","url_meta":{"origin":194,"position":5},"title":"Criando mais de um arquivo de Log melhora a performance do SQL Server?","author":"Fabr\u00edcio Lima","date":"22 de maio de 2011","format":false,"excerpt":"Fala Pessoal, A algum tempo, almo\u00e7ando com um profissional que presta servi\u00e7o de um software para minha empresa, ele me disse que criando v\u00e1rios arquivos de Log para um database melhorava a performance da mesma. Na hora eu achei muito estranho pois nunca tinha lido nada disso em nenhum post\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/194","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=194"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/194\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}