Rebalancear DataFiles en SQL Server

Hola amigos! En la entrada de hoy vamos a ver como rebalancear datafiles grandes o varios más pequeños de igual tamaño. Esta tarea optimiza los discos permitiendo distribuir la información uniformemente y evitando cuellos de escritura.

Es una tarea sencilla pero que se puede prolongar en el tiempo debido al movimiento de páginas, tanto lectura y escritura. Partimos de un escenario donde ni el tiempo de parada ni la degradación se puede estimar por lo que se recomiendo tener tiempo más que suficiente.

El motor en sí mismo no incorpora ninguna herramienta que automatice esta tarea por lo que somos nosotros los que tenemos que, por medio de varios pasos, realizarla. Más información en : https://docs.microsoft.com/es-es/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-ver15

¿CÓMO PODEMOS REBALANCEAR DATAFILES?

Partimos del siguiente escenario:

Tenemos los siguientes ficheros de Datos:

Rebalancear DataFiles en SQL Server

Queremos partir el fichero de 43GB en  4 ficheros de 11GB.

El primer paso será crear los ficheros que necesitamos, en nuestro caso como hemos comentado quedaría así. (de paso hemos reducido el log file a 2GB)

Rebalancear DataFiles en SQL Server

Puesto que fichero inicial es el fichero maestro del grupo de archivos, no podremos eliminarlo por lo que tenemos que migrar a 4 ficheros nuevos y luego cambiar uno de ellos.

Ahora ejecutamos el shrink con movimiento a fichero nuevo:

USE [pruebas]
 GO
 DBCC SHRINKFILE (N'pruebas' , EMPTYFILE)
 GO 

*** DBA TIP ***

  • Este proceso se puede parar y relanzar en cualquier momento.
  • No bloquea objetos por lo que no produce indisponibilidad .
  • No utiliza espacio de log.

Una vez termine el proceso vemos que tenemos los ficheros igualmente llenos.

Ahora solo quedaría realizar el shrink del 4 al 1 y eliminar el fichero.

 USE [pruebas]
 GO
 DBCC SHRINKFILE (N'pruebas4' , EMPTYFILE)
 GO 
 ALTER DATABASE [Pruebas] REMOVE FILE [pruebas4] 

Como vemos, los 4 ficheros ahora tienen el mismo espacio ocupado y crecerán por parejo aumentando el rendimiento.

¡¡Si necesitas ayuda con esta u otra operación, no dudes en contactar con nosotros!! ¡Hasta la próxima! Si quieres ver más información sobre SQL Server no dudes en visitar:https://www.gpsos.es/category/bases-de-datos/sql-server/

¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.

Sígue a GPS en LinkedIn