Loading…

Criando mais de um arquivo de Log melhora a performance do SQL Server?

Fala Pessoal,

A algum tempo, almoçando com um profissional que presta serviço de um software para minha empresa, ele me disse que criando vários 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 ou artigo sobre Tuning. Para ser sincero, naquele momento eu não sabia nem se era possível criar mais de um arquivo de log para uma database, pois sempre li que eram criados um arquivo .ldf, um .mdf e vários .ndf, mas não lembrava de ter lido que era possível criar mais de um arquivo .ldf.

Claro que a primeira coisa que fiz ao voltar do almoço foi testar e pesquisar sobre o assunto. Rapidamente verifiquei que era possível criar mais de um arquivo de log, então restava saber se isso realmente impactava na performance. A pessoa que me disse isso tinha muito certeza do que estava dizendo.

Naquele dia me lembro de ter encontrado um post do Paul Randal, em que ele dizia rapidamente que criar mais de um arquivo de log não melhorava em nada a performance. Mostrei para a pessoa mas ela não acreditou muito pois eu estava lendo em um Blog (se o blog do Paul Randal não é confiável vou até tirar o meu blog do ar).

Em casa, vasculhando meu livro SQL Server 2008 Internals, para ser mais exato, na página 189 diz o seguinte:

O Sql Server trata múltiplos arquivos de Log como se eles fossem apenas um grande arquivo de Log sequencial. Isso significa que todos os VLFs de um arquivo físico são utilizados antes de qualquer outro VLF do segundo arquivo de Log. Se você tem um arquivo de Log que é bem gerenciado com relação ao tamanho e que possua backups, você não deve nunca usar mais de um arquivo de Log.

Então, não existe nenhuma razão para se utilizar mais de um arquivo de log para uma database se você determinar um tamanho ideal para seus arquivos de log e fizer uma rotina de backups. Contudo, se você acha que seu arquivo de log pode crescer mais do que o esperado e o volume do disco onde estão os arquivos de log não possuem espaço livre suficiente para que os logs cresçam o quanto for necessário, aí sim você deve criar um segundo arquivo de log em um outro volume para sanar esse problema.

Fica a Dica.

Gostou desse Post?

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.

Abraços,

Fabrício Lima

MCITP – Database Administrator

Consultor e Instrutor SQL Server

Trabalha com SQL Server desde 2006

8 thoughts on “Criando mais de um arquivo de Log melhora a performance do SQL Server?

  1. Fabricio,
    Muito boa abordagem, já tirei essa dúvida em sala de aula e o aluno jurou que havia escutado essa mesma explicação de um consultor, tlvz seja o mesmo (eheheh), mas ao meu entendimento o que pode influenciar em performance é um bom dimensionamento do arquivo log, assim como a alocação dele em uma estrutura de discos adequada.
    Abraço.

  2. Fabricio,
    Tanto a sua abordagem quanto a do Paul Randal fazem todo o sentido. Por característica do uso do arquivo de log, não há nenhum ganho em se ter mais de um arquivo para cada banco de dados. Se o consultor tivesse falado sobre dividir os arquivos de dados do tempdb, para dividir a carga sobre ele, aí seria outra história… Show de bola!

  3. Fabricio,
    Será que a pessoa não confundiu com vários arquivos de dados (ao invés do log)? ou talvez remotamente, vários arquivos da Tempdb?

    1. Fala Roberto,

      Não confundiu não. Bati várias vezes na tecla de que com o arquivo de dados poderíamos ter um melhora, mas ele disse que o mesmo aconteceria com os arquivos de log da database do sistema dele, nada de tempdb também.

      Valeu pelo comentário.

Deixe uma resposta