¿Qué tan importantes son los VLF cuando se considera el rendimiento de la base de datos? ¿Qué describiría una situación óptima para los VLF?
¿Qué tan importantes son los VLF cuando se considera el rendimiento de la base de datos? ¿Qué describiría una situación óptima para los VLF?
Respuestas:
¿Qué es un archivo de registro virtual?
SQL Server divide el archivo de registro de transacciones para cada base de datos en fragmentos más pequeños, llamados 'archivos de registro virtuales' (o VLF para abreviar). Su función principal es como marcadores de truncamiento en una copia de seguridad de registro, es decir, el Servidor SQL solo borrará (y marcará disponible para reutilizar) los VLF que están completamente vacíos. MSDN tiene una pieza en el Registro de transacciones - Arquitectura física .
¿Qué determina el número de VLF?
Cada vez que crece un archivo de registro (ya sea mediante crecimiento automático o crecimiento manual), la nueva sección del archivo de registro se divide en una serie de VLF, basándose únicamente en el tamaño de la nueva sección (el registro de transacciones existente se deja solo). Por lo tanto, una configuración pequeña de crecimiento automático (es decir, el crecimiento automático del 10% que es el predeterminado) hará que se cree una gran cantidad de VLF.
¿Cuáles son las implicaciones de una gran cantidad de VLF?
El problema principal que causa una gran cantidad de VLF son:
DBCC
ya que utilizan instantáneas de la base de datos en segundo plano para facilitar las comprobaciones de coherencia sin bloqueo).¿Cómo puedo saber cuántos VLF tiene mi base de datos?
DBCC LOGINFO
devolverá 1 fila por cada VLF en el registro de transacciones de su base de datos. Esta pregunta tiene un par de scripts útiles para aplicar eso en todas las bases de datos en un servidor.
¿Cuántos VLF son demasiados?
Esa es una decisión que tendrás que hacer por ti mismo. Mi regla general es que no vale la pena jugar con menos de 50 años, y más de 100 (más o menos) y reparo la configuración de crecimiento automático y hago una nota mental para (en la siguiente ventana de mantenimiento) reducir y volver a crecer el registro (como se muestra a continuación) .
¡Ayuda! Tengo once mil millones de VLF y la recuperación de mi base de datos lleva todo el día.
Breve resumen ( del blog de Kimberly Tripp ):
BACKUP LOG
)DBCC SHRINKFILE
con TRUNCATEONLY
para reducir el archivo de registro al tamaño más pequeño posible.ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize
para cambiar el tamaño de su registro de transacciones en un solo paso **.** Nota: si tiene un archivo de registro muy grande (decenas de GB o más), es posible que desee cambiar el tamaño en varios pasos para obtener un número apropiado de VLF con un tamaño adecuado para evitar copias de seguridad de registro excesivamente 'gruesas'. Como los VLF son la unidad de truncamiento, también determinan los tamaños de las copias de seguridad del registro, como se detalla en el blog de Kim .