viernes, septiembre 29, 2023

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 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

Redes Sociales

2,736FansMe gusta
326SeguidoresSeguir

Popular esta semana

SQL Server

Cómo saber la fecha que se modificó un procedimiento almacenado

Poder saber cuales objetos o procedimientos almacenados se modificaron recientemente es muy útil principalmente en bases de datos donde varios desarroladores tienen acceso
SQL Server MERGE

MERGE en SQL Server para Insert, Delete y Update con dos tablas

Ejemplo práctico usando MERGE para sincronizar dos tablas, Insert, Update y Delete en un solo query. Válido para SQL SERVER 2008 o superior.
SQL Server

Format en SQL Server (Transact-SQL)

La función Format aplica desde SQL Server 2012 en adelante. Devuelve un valor con el formato previamente indicado. Se puede utilizar para definir el formato de una fecha y hora o para retornar un numero como varchar en un formato específico.

Últimos artículos

SQL Server MERGE

MERGE in SQL Server for Insert, Delete and Update with two tables

Practical example using MERGE to synchronize two tables, Insert, Update and Delete in a single query. Valid for SQL SERVER 2008 or...

Como crear una API REST con ASP.NET Core 6.0

Crear una API REST con C# en ASP.NET es un proceso sencillo y rápido que permite exponer un conjunto de recursos a...
Machine Learning & Python

Introducción a Machine Learning en Python

Machine Learning es una rama de la inteligencia artificial que se enfoca en el desarrollo de sistemas que pueden aprender de...
SQL Server MERGE

MERGE en SQL Server, como utilizarlo de forma sencilla

El comando MERGE en SQL Server se utiliza para combinar datos de varias tablas en una sola tabla. Es útil para actualizar...