Eu tenho (na minha opinião) comportamento muito estranho de crescimento de log do SQL Server. Eu tenho um banco de dados com aproximadamente 8 GB de tamanho de log. Fiz backup do log de transações e comecei a excluir cerca de 4 milhões de linhas. O arquivo de log não cresceu. Então tentei excluir outros 4,9 milhões de outra tabela - o arquivo de log cresceu para cerca de 26 GB e encheu a unidade.
Consegui consertar a situação, mas fiquei curioso - já que (até onde sei) o arquivo de log contém apenas comandos para excluir registros (neste caso), como pode haver uma diferença tão grande entre 2 operações quando o número de linhas afetadas é apenas 20% diferente?
Muito para um comentário, mas apenas para provar que a quantidade de dados tem um impacto muito maior sobre o quanto é registrado, em comparação com simplesmente o número de linhas.
Primeiro, crie um banco de dados e faça backup dele para não ficarmos pseudo-simples:
Agora, crie uma tabela estreita e uma tabela larga e insira 2.000 linhas:
Faça backup do log duas vezes:
Com um log limpo, vamos excluir metade de cada tabela (1.000 linhas aleatórias):
Eu recebo:
Claramente, há muito mais espaço de log necessário para excluir o mesmo número de linhas de uma tabela ampla, quando comparada a uma tabela mais fina.
Como extensão lógica, o número e a largura dos índices também podem influenciar essa diferença. E eu nem tentei dados LOB, nem investiguei as linhas onde
AllocUnitName
estava NULL. O acima por si só demonstra uma diferença de 7X.