{"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":""},"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"],"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}]}}