¿El registro de transacciones se reducirá automáticamente en SQL Server?

10

Cuando la base de datos de SQL Server está en modo SIMPLE, no tiene que preocuparse por los paquetes de registro de transacciones. Pero en un modo SIMPLE, el registro de transacciones parece crecer como lo hace en modo COMPLETO. ¿Se trunca automáticamente en algún momento? ¿O tengo que truncarlo / reducirlo manualmente?

jrara
fuente

Respuestas:

19

Se truncará automáticamente, pero eso es muy diferente de reducir. El truncamiento reclama espacio de registro para su reutilización, la reducción física reduce el tamaño del archivo para liberar espacio de nuevo al sistema operativo. Si su registro ha crecido a su tamaño actual, es probable que vuelva a crecer si lo reduce.

Sugeriría obtener un control sobre el uso de registro típico y máximo para su sistema. La consulta a continuación (no la mía, impulsada por los scripts de DMV de Glen Berrys) podría ejecutarse manualmente o podría capturar el resultado en una tabla a través de un trabajo de agente. Si lo registra en una tabla durante una semana más o menos, obtendrá una imagen del uso típico y, lo que es más importante, cuando un proceso esté haciendo que el registro crezca más de lo que espera.

SELECT 
     db.[name] AS [Database Name]
   , db.recovery_model_desc AS [Recovery Model]
   , db.log_reuse_wait_desc AS [Log Reuse Wait Description]
   , ls.cntr_value AS [Log Size (KB)]
   , lu.cntr_value AS [Log Used (KB)]
   , CAST(
        CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT) 
        AS DECIMAL(18,2)
     ) * 100 AS [Log Used %]
   , db.[compatibility_level] AS [DB Compatibility Level]
   , db.page_verify_option_desc AS [Page Verify Option]
   , db.is_auto_create_stats_on, db.is_auto_update_stats_on
   , db.is_auto_update_stats_async_on, db.is_parameterization_forced
   , db.snapshot_isolation_state_desc, db.is_read_committed_snapshot_on
FROM sys.databases AS db
   INNER JOIN sys.dm_os_performance_counters AS lu 
     ON db.name = lu.instance_name
   INNER JOIN sys.dm_os_performance_counters AS ls 
     ON db.name = ls.instance_name
WHERE lu.counter_name LIKE N'Log File(s) Used Size (KB)%' 
   AND ls.counter_name LIKE N'Log File(s) Size (KB)%'
   AND ls.cntr_value > 0 
OPTION (RECOMPILE);

El truncamiento del registro de transacciones describe tanto cuándo como por qué ocurre el truncamiento del registro.

Si los registros de registro nunca se eliminaron del registro de transacciones, eventualmente ocuparía todo el espacio en disco disponible para los archivos de registro físicos. El truncamiento del registro libera automáticamente espacio en el registro lógico para su reutilización por el registro de transacciones.

Factores que pueden retrasar el truncamiento del registro es una referencia útil para comprender por qué su registro puede no truncarse y, por lo tanto, crecer más de lo esperado.

Mark Storey-Smith
fuente
4

No y no

  • no se encogerá ni truncará (en el sentido físico del LDF, lo hará lógicamente)
  • tiene que ser del tamaño que sea para que no lo encojas

Si lo reduce, volverá a crecer y tendrá un archivo fragmentado

gbn
fuente
0

Como se mencionó anteriormente, no, no se reducirá automáticamente. Sin embargo, limpiará algo de basura.

La razón es que en el modelo de recuperación completa le está diciendo a SQL que desea realizar copias de seguridad de tlog para la recuperación en un momento dado, por lo tanto, mantiene un registro de todas las transacciones realizadas en una base de datos.

Como le está diciendo que desea recuperar el punto en el tiempo, debe hacer copias de seguridad completas y copias de seguridad de tlog. A medida que completa sus copias de seguridad de tlog, vaciará el contenido del registro (además del final de la cola) y comenzará de nuevo.

Puede ayudar si piensa en estos archivos como contenedores.

Mi sugerencia es que si los tlogs se han vuelto grandes e inmanejables, corte una copia de seguridad completa. Cambie al modelo de recuperación SIMPLE y REDUZCA el archivo tlog. Vuelva al modelo de recuperación completa y realice el mantenimiento de fragmentación *. Como otros han publicado, esta no es la mejor práctica y conducirá a altos niveles de fragmentación.

Planifique y comience un régimen de respaldo después de eso.


* Indexar operaciones de reconstrucción / reorganización y desfragmentación a nivel de disco . Esto no es parte del mantenimiento de registros: mantiene sus registros T al hacer una copia de seguridad de ellos. Son contenedores que crecen cuando se acercan a su capacidad. Reconstruir / reorganizar puede ayudar a recuperarse de una gestión de registros inadecuada que conduce a un gran uso del disco.

Ryan
fuente