viernes, abril 19, 2024

Como reducir el tamaño de la base de datos y del log en SQL Server

Generalmente el tamaño de nuestra base de datos va aumentando conforme se utilice, y no necesariamente por que se le agreguen nuevos datos, sino por consultas, transacciones, errores, índices, etc. Por este motivo tenemos que estar regularmente brindandole mantenimiento a nuestras bases de datos.

Como primer paso vamos a consultar el tamaño actual de la base de datos, para que, posteriormente podamos comparar el resultado luego de las instrucciones que vamos a realizar. Entonces ejecutaremor desde el SQL Query Analyzer el siguiente comando DBCC UPDATEUSAGE(0).

El DBCC UPDATEUSAGE(0) restablece la generación de informes de uso, de manera que sp_spaceused pueda informar correctamente acerca del tamaño de la base de datos, el espacio sin asignar, el tamaño de los datos, el tamaño del índice y el espacio sin usar. Normalmente, debe realizar esta operación sólo después de reconstruir los índices. (Tenga en cuenta que si no ejecuta DBCC UPDATEUSAGE(0) después de reconstruir los índices, sp_spaceused informará acerca de los números que existían antes de reconstruir los índices.)

Código que se debe de ejecutar en el SQL Query Analyzer:

DBCC UPDATEUSAGE(0)

Luego desde el Query vamos a ejecutar sp_spaceused que nos mostrará el tamaño actual de la base de datos, el espacio sin asignar, el tamaño de los datos, el tamaño del índice y el espacio sin usar.

Código que se debe de ejecutar en el SQL Query Analyzer:

sp_spaceused

Guarda esta información para que luego de las operaciones de mantenimiento puedas comparar y comprobar que realmente el tamaño de la base de datos ha sido reducido.

Para reducir el tamaño del fichero físico debemos utilizar una opción del menú del SQL Enterprise Manager, seleccionamos con el boton derecho del mouse la base de datos y optamos por "all tasks" (todas las tareas) luego "Shrink Database"

En esa acción se nos abre un cuadro de diálogo donde seleccionamos la opción "Move pages to beginning of file befote shrinking" pulsamos OK y esto reducirá el tamaño del fichero fisico.

Una vez realizado este proceso es recomendable utilizar las siguientes instrucciones en el Query Analyzer para borrar el log y reducir su tamaño.

BACKUP LOG base_de_datos WITH TRUNCATE_ONLY

DBCC SHRINKDATABASE ( base_de_datos , TRUNCATEONLY )

Luego de haber realizado estas acciones podemos volver a ejecutar los comandos mostrados arriba DBCC UPDATEUSAGE(0) y sp_spaceused en el Query para comparar el tamaño actual de la base de datos con el tamaño que tenía antes de las acciones de mantenimiento.

Importante es tener siempre respaldos de nuestra base de datos por cualquier inconveniente que se nos pueda prensentar, mas aún tener un respaldo actualizado antes de realizar cualquier operación de mantenimiento.

Ahora el siguiente paso luego de realizar la reducción del log de nuestra base de datos, se recomienda reconstruir los índices para mejorar el rendimiento de la base de datos. Aquí les dejo el link del artículo donde se explica como hacerlo. Como reconstruir los índices en nuestra base de datos SQL Server

Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub
Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub