Sidebar

Monitorear el log de transacciones es una de las actividades más importantes para los administradores de bases de datos, ya que en caso de que este llegara a llenarse, no podrían llevarse a cabo más transacciones sobre esta base de datos quedando fuera de servicio.

Monitoreando el log de transacciones

Monitorear el log regularmente puede ayudarnos a resolver varios problemas dentro de nuestros sistemas, ya que este puede indicarnos si existen demasiadas transacciones realizadas por una sola aplicación, que podría resultar en un mal diseño o simplemente la necesidad de planear mejor los recursos de log en nuestro servidor de base de datos.

Es muy importante tener en cuenta que si el log de transacciones llegara a saturarse, SQL Server no podrá realizar más cambios dentro de nuestra base de datos.

La manera de monitorear un log de transacciones, puede llevarse a cabo de 2 maneras, una de ellas es mediante un comando desde el analizador de consultas y la otra utilizando los contadores de SQL Server desde el sistema operativo.

  • Desde el analizador de consultas ejecutar el comando DBCC SQLPERF(LOGSPACE).
  • Utilizando los contadores de SQL Server que se describen a continuación.

Contador

Descripción
Log Bytes Flushed/sec Número total de bytes del log de transacciones vaciados
Log Flushes/sec Número de vaciados del log de transacciones
Log Flush Waits/sec

Número de confirmaciones (commit) en espera al momento de vaciar el log de transacciones.

Percent Log Used

Porcentaje del log de transacciones usado.

Log File(s) Size(KB)

Tamaño total del log de transacciones de la base de datos

Log Cache Hit Ratio

Lecturas realizadas a través de la caché del administrador de registro.

Situaciones en las que se produce mucha actividad en el log de transacciones

Algunas de las situaciones por la que podría presentarse mucha actividades en el log de transacciones y saturarlo son:

  • Cargar información en una tabla que tiene indices. SQL Server almacena en el log todos los inserts y cambios en los índices. Cuando se carga en tablas que no tienen indices SQL Server solo reserva extents para el log.
  • Transacciones que realizan muchas modificaciones (INSERT, UPDATE,DELETE) a una tabla en una sola transacción. Esto generalmente occurre cuando la sentencia WHERE es muy general, causando que muchos registros sean modificados.

Expandiendo el log de transacciones

Expandir un log de transacciones debe de realizarse solamente si en verdad es requerido por la aplicación y no solo por el echo de asignar más espacio, ya que para ello existen los respaldos del log de transacciones en donde se vacia el espacio ocupado del log.

Para asignar espacio de log a una base de datos pues realizarse mediante el SQL Server Enterprise Manager o la sentencia ALTER DATABASE, en esta caso hablaremos solamente de la sentencia ALTER DATABASE

Ejemplo:

Agregar dos archivos de log a una base de datos

El ejemplo siguiente agrega dos archivos de log de 5 MB a una base de datos.

USE master
GO
ALTER DATABASE Test1
ADD LOG FILE
( NAME = test1log2,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test2log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB),
( NAME = test1log3,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test3log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
GO

Search

Tips BD