Ir al contenido principal

Cremiento de espacio en la base de datos?

¿Por qué crece tanto mi base de datos? Un problema muy habitual (bueno, realmente no es un problema, como ahora veremos) al trabajar con SQL Server, es que una base de datos crezca y crezca hasta incluso agotar todo el espacio de disco disponible. En muchos casos, esto es debido al modo de registro completo (Recovery Full) y a la configuración de Copias de Seguridad del LOG. En este capítulo se explica este problema, así como soluciones y alternativas.

Por defecto, la base de datos MODEL de SQL Server, está configurada con el Modo de Recuperación o Modo de Registro en Completo (Recovery Full), excepto en las ediciones MSDE y SQL Express. Este modo de registro, implica que todas las transacciones ejecutadas contra la base de datos (DMLs, Planes de Mantenimiento, etc.) quedan almacenadas en el fichero (o ficheros) de LOG de la misma. Como consecuencia, con el paso del tiempo, la base de datos irá tomando cada vez un tamaño mayor, debido al aumento producido en el LOG, y si no ponemos remedio, se puede llegar a llenar el disco duro, lo cual, muy probablemente implicará una caída del servicio.
El principal problema es que siempre que creamos una base de datos, salvo que especifiquemos de forma explícita lo contrario, se creará a imagen y semejanza de MODEL, luego este problema se puede materializar sobre todas las bases de datos de nuestras Instancias. No es raro encontrar una base de datos con 20 MB de datos y 40 GB de Log...
Pero ¿cómo podemos solucionar este problema de crecimiento de bases de datos? Pues tenemos principalmente dos alternativas:
  • Cambiar el modo de registro a sencillo (Recovery SIMPLE). No es lo más recomendable, pero tenemos que admitir que es la solución más sencilla. En este modo de registro, siempre que se confirma o deshace una transacción, el espacio ocupado en el fichero de LOG se queda como espacio libre reutilizable por futuras transacciones, con lo cual, el fichero de Log es muy improbable que crezca (puede crecer por alguna transacción grande, o por múltiples transacciones activas - ej: concurrencia - pero nada prohibitivo).
  • Realizar Backups de LOG con frecuencia. Esta es la opción recomendada. Al realizar un Backup de Log, la información de las transacciones se lleva al dispositivo de Backup, y una vez que ha sido respaldada dicha información, se marca como reutilizable el espacio de LOG que utilizaba. Por ello, si hacemos Backups de Log con frecuencia, tendremos controlado el tamaño del Log de nuestras bases de datos, pero implica respaldar el LOG de nuestra base de datos con frecuencia.

    Además, en caso de necesidad, podemos restaurar nuestro último Backup FULL, y seguidamente, recuperar todos los Backups de LOG hasta el momento en el tiempo en que deseamos recuperar. Y no sólo eso... incluso si nuestro último Backup FULL está corrupto o lo hemos perdido, es posible recuperar un Backup FULL anterior y seguidamente recuperar todos los Backups de LOG hasta el momento deseado.

    Sin embargo, implica un riesgo importante: Si no es posible realizar los Backup de LOG (ej: el Agente de SQL Server está en estado detenido), seguiremos con el mismo problema de crecimiento del fichero de LOG, y además, el siguiente Backup de LOG, se llevará toda la información de LOG pendiente de respaldar, lo que puede implicar un Backup costoso.

Comentarios

Entradas populares de este blog

SQL Server Analysis Services Neural Network Data Mining Algorithm

Problem In data mining and machine learning circles, the neural network is one of the most difficult algorithms to explain. Fortunately, SQL Server Analysis Services allows for a simple implementation of the algorithm for data analytics.  Check out this tip to learn more. Solution In this tip, we show how to create a simple data mining model using the Neural Network algorithm in SQL Server Analysis Services 2012. In Visual Studio (also known from the start menu as SQL Server Data Tools), create a new Analysis Services Multidimensional and Data Mining Project. In this tip, we will name the project NeuralNetworkExample. Click on OK when finished with the New Project window. In the Solution Explorer window, right-click on the Data Sources folder and choose "New Data Source..." to initiate the Data Source Wizard. Click on "Next >". Choose your data connection, if one exists. If a data connection does not exist, click on "New..." to ...

Big Data Clusters in SQL Server 2019: A Game Changer for Data Analytics

 In today’s data-driven world, organizations are constantly seeking innovative ways to process and analyze vast amounts of data. SQL Server 2019 introduced Big Data Clusters (BDC) , a revolutionary feature that integrates SQL Server, Apache Spark, and Hadoop Distributed File System (HDFS) into a single platform. This feature allows enterprises to process structured and unstructured data efficiently, making it an essential tool for businesses handling large datasets. With the growing complexity of data ecosystems, enterprises require an integrated approach to manage, process, and analyze vast amounts of information. Traditional databases often struggle to handle such workloads efficiently, making big data solutions crucial. SQL Server 2019, with its Big Data Clusters , brings forth an innovative approach to handling large-scale data by bridging the gap between structured and unstructured datasets , enabling businesses to extract meaningful insights quickly. What is a Big Data Clus...

Habilitando Conexiones Remotas a SQL Server 2005

Habilitando conexiones remotas en SQL Server 2005 Hace unos pocos días me encontré ante el siguiente problema: desde una máquina virtual montada en VMWare con Windows XP y SQL Server 2005, necesitaba realizar una prueba consistente en conectar a otro servidor SQL Server 2005, instalado en la máquina principal con Windows Vista, para consultar una tabla existente en una de sus bases de datos. Pensando en que por defecto, la posibilidad de conexión ya estaría habilitada en el servidor SQL, intenté registrar desde la máquina virtual el SQL Server del equipo principal, obteniendo el error que vemos en la siguiente imagen. Tengo instalada la edición Developer de SQL Server 2005, y dado que evidentemente, la posibilidad de conectar a una instalación remota existente en otro servidor de datos no se encontraba establecida por defecto, había que habilitarla de forma manual. A continuación describimos los pasos a realizar para habilitar el establecimiento de conexiones remotas en SQL Se...