Data

16 jun, 2014

Mais de um arquivo de log (.ldf) no SQL Server?

Publicidade

Neste artigo, vamos abordar um assunto que despertou minha curiosidade: ouvi um amigo dizer que criou dois arquivos de log (ldf). No primeiro momento achei que ele estava brincando, pois nunca tinha visto nenhum banco de dados SQL Server com mais de um arquivo LDF. Em documentos oficiais da Microsoft sempre é mencionado como boas praticas ter um arquivo de MDF, alguns NDF e um LDF.

Pesquisando mais sobre o assunto, realmente é possível criar mais de um LDF para um banco de dados. Encontrei referências em alguns blogs de respeito, como do Fabricio Lima e também do mito Paul Randal, que relatam justamente essa questão sobre múltiplos LDFs.

Analisando os fatos com mais detalhes, me peguei pensando qual seria a necessidade de cria mais de um arquivo de log. Segurança? Performance? Espaço físico?

O SQL Server escreve no log de forma sequencial, nunca aleatória e internamente ele entende múltiplos arquivos de log como se fossem apenas um só; como se fosse um “lógão”. Desta forma, se você criar dois arquivos de logs com 10gb cada, o SQL Server entenderá que existe 20gb de log para utilizar e vai preenchendo esse espaço de forma sequencial. Com isso, a questão de performance morre aqui, pois mesmo se criarmos dois arquivos em unidades diferentes, o SQL não ira dividir as transações entre os dois discos. No caso de segurança não vejo nenhuma vantagem, na verdade analisando friamente podemos criar um possível problema, pois múltiplos arquivos implicam em novos pontos de falhas. E essas falhas pode ocorrer por corrupção, falha na unidade ou por qualquer outro motivo que pode deixar o banco de dados offline, causando um grande problema.

Assim, o único cenário onde eu vejo a necessidade de criar mais de um arquivo de log, seria onde o arquivo existente precisa crescer e no disco atual não existe mais espaço físico. Neste caso, uma solução seria criar um novo arquivo LDF em outra unidade de disco, assim alongando o log. Porém, sabemos que o crescimento do log descontrolado é decorrência de algum problema ou fato esporádico como transações abertas, alguma operação que manipulou grande operação de dados, DBCCs, entre outras. Portanto, antes de criar outro arquivo de log, devemos analisar com cuidado nosso ambiente e entendo que a criação do segundo arquivo seria em casos de extrema urgência, pois para todos os outros casos existem maneiras de contornar a situação.

Até o próximo artigo. Grande abraço!