Qual a importância das VLFs ao considerar o desempenho do banco de dados? O que descreveria uma situação ideal para VLFs?
Qual a importância das VLFs ao considerar o desempenho do banco de dados? O que descreveria uma situação ideal para VLFs?
Respostas:
O que é um arquivo de log virtual?
O SQL Server divide o arquivo de log de transações de cada banco de dados em blocos menores, chamados 'arquivos de log virtuais' (ou VLFs, abreviado). Sua função principal é como marcadores de truncamento em um backup de log, ou seja, o SQL Server somente limpa (e marca disponível para reutilização) VLFs que estão completamente vazios. O MSDN possui uma peça no log de transações - arquitetura física .
O que determina o número de VLFs?
Cada vez que um arquivo de log cresce (seja por crescimento automático ou crescimento manual), a nova seção do arquivo de log é dividida em um número de VLFs, baseado exclusivamente no tamanho da nova seção (o log de transações existente é deixado em paz). Portanto, pequenas configurações de crescimento automático (ou seja, o crescimento automático de 10% que é o padrão) farão com que um grande número de VLFs seja criado.
Quais são as implicações de um grande número de VLFs?
O principal problema causado por um grande número de VLFs é:
DBCC
pois elas usam capturas instantâneas do banco de dados em segundo plano para facilitar verificações de consistência sem bloquear).Como posso descobrir quantos VLFs meu banco de dados possui?
DBCC LOGINFO
retornará 1 linha para cada VLF no log de transações do seu banco de dados. Esta pergunta possui alguns scripts úteis para aplicar isso em todos os bancos de dados em um servidor.
Quantos VLFs são muitos?
Essa é uma decisão que você terá que fazer por si mesmo. Minha regra de ouro pessoal é que abaixo dos 50 não vale a pena mexer, e mais de 100 (mais ou menos) e eu ajusto as configurações de crescimento automático e faço uma anotação mental para (na próxima janela de manutenção) diminuir e recuperar o registro (como abaixo) .
Socorro! Eu tenho onze bilhões de VLFs e minha recuperação de banco de dados leva o dia todo!
Breve resumo (do blog de Kimberly Tripp ):
BACKUP LOG
)DBCC SHRINKFILE
com TRUNCATEONLY
para reduzir o arquivo de log para o menor tamanho possível.ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize
para redimensionar o backup do seu log de transações em uma única etapa **.** Nota - se você tiver um arquivo de log muito grande (dezenas de GBs ou mais), convém redimensionar em várias etapas para obter um número apropriado de VLFs com um tamanho apropriado para evitar backups de log excessivamente "pesados". Como as VLFs são a unidade de truncamento, elas também determinam os tamanhos de backup de log, conforme detalhado no blog de Kim .