May
04
2020

¿Tu Base de Datos está creciendo demasiado? Parte I


Un problema muy común para los Administradores de Base de Datos (DBAs) es el limitado espacio de almacenamiento en disco. Ya sea por temas de presupuesto o de infraestructura, no siempre es posible incrementar el espacio de almacenamiento de nuestros servidores de una manera rápida. Por lo anterior es necesario ejecutar acciones eficaces sobre este tipo de problemas, para ahorrarnos un mal rato lidiando con el outage de una base de datos.

Aquí te dejamos tres recomendaciones sencillas para enfrentar el problema del crecimiento desmesurado de tus archivos de datos (*.mdf y *.ndf) en SQL:

a) Identificar las tablas más pesadas:

Para este fin podemos usar un reporte que nos ofrece el SQL Server Management Studio, llamado ‘Disk Usage by Table’ (Uso de Disco por Tabla). Este reporte es muy útil ya que nos brinda información del tamaño de cada tabla de la base de datos, junto con el número de filas y el espacio asignado en disco.

Podemos toparnos con 2 escenarios: (1) Las tablas se reparten de una manera balanceada en el espacio ocupado por la base de datos o (2) Existen tablas que ocupan la mayor parte del espacio usado por la base de datos. En caso tengamos el escenario 2 es recomendable implementar una política de retención de datos que vaya de acuerdo con las políticas de la empresa. Habrá también casos en los que será necesario crear una base de datos histórica donde se almacene toda la data de estas tablas que sobrepasen el tiempo de retención.


b) Comprimir los archivos de datos

En algunos casos, el archivo de datos se podrá comprimir debido a que no todo el espacio asignado en disco esta siendo utilizado. Esto puede suceder en casos de depuración de datos (por ejemplo, después de la implementación de la política de retención) o cuando se han eliminado objetos de gran tamaño de esta. Esto también podemos verificarlo con ayuda del reporte mencionado anteriormente. Otro reporte útil para este fin es ‘Disk Usage’ (Uso de Disco), el cual nos mostrará cuanto espacio no está siendo usado (unallocated) y que podremos reclamar para liberar espacio en disco.

Después de identificar que hay un espacio considerable que no esta siendo usado, podemos aplicar un ‘Shrink’ (Reducción) sobre los archivos de datos respectivos.

 

c) Mover de ubicación los archivos de datos:

De acuerdo con las mejores practicas de SQL Server, se recomienda almacenar los archivos de datos (.mdf) y los archivos de logs (.ldf) en discos separados. De esta manera podemos evitar que los problemas de crecimiento inesperado de los archivos ‘log’ impacten en el espacio asignado para los archivos de datos. De no ser el caso recomendamos que se reubiquen los archivos de datos y logs respectivamente. Esto requerirá de un reinicio del servicio de SQL Server para que los cambios surtan efecto. 

En ambientes donde contamos con suficientes discos de almacenamiento es recomendable tener un disco para cada base de datos y para cada tipo de archivo de datos (.mdf y .ldf). De esta manera podemos aislar los problemas de espacio de una base de datos y prevenir que esos problemas afecten a otros dentro de la misma instancia\servidor.

 

Estas son solo algunas de las recomendaciones que podemos implementar en nuestros ambientes de bases de datos. En la red podemos encontrar una gran variedad de soluciones, pero al final todo va a depender de factores como la criticidad y la transaccionalidad de la base de datos, el presupuesto, entre otros.


Únete a la Conversación

DEJA UN COMENTARIO

Tu dirección de correo electrónico no será publicado. Campos requeridos están marcados *