Pasos para mover tablas a otro FileGroup: Como mover tablas a otro FileGroup
Como mover tablas a otro FileGroup
Como mover tablas a otro FileGroup, es algo tan importante como realizar un respaldo sin embargo, Existen empresas que por ahorrar dinero nuncan contratan a un DBA (administrador de base ded datos), luego vienen las quejas a los desarrolladores tales como
- El aplicativo esta lento
- El sistema vive colgado (Aqui me imagino al aplicativo con una cuerda en el cuello )
- No funciona nunca( osea 24 horas?)
- Otros
Pero cuando instalan el SQL Server y crean una base de datos, NEXT NEXT NEXT y asi hasta que se terminan las opciones han creado un solo archivo de base de datos
Cuando un archivo cualquiera Excel o txt es muy grande y lo intentamos abrir el tarda, porque tiene que leer mucha informacion en memoria, basado en este ejemplo si tenemos un unico archivo de base de datos nuestras consultas se veran afectadas en rendimiento para retornar nuestros datos
Para solucionar esto debemos redistribuir nuestras tablas en diferentes archivos ndf, de forma predeterminada, una base de datos tiene un solo grupo de archivos llamado PRIMARY y todas las tablas se almacenan en este grupo de archivos. Sin embargo, es posible crear otros grupos de archivos y almacenar tablas en estos otros grupos de archivos. Una de las razones más comunes para hacer esto es si tiene algunos discos de alto rendimiento y desea almacenar ciertas tablas en los discos más rápidos. Esto es especialmente útil para almacenes de datos y otras bases de datos grandes donde puede tener algunos datos a los que se accede con más frecuencia y donde los tiempos de respuesta son particularmente importantes, (DataWhereHouse, Sistemas CRM, otros)
Paso 1: identificar mis tablas y sus grupos de archivos
1 2 3 4 5 6 7 8 9 |
SELECT tbl.name AS [Table Name], CASE WHEN dsidx.type='FG' THEN dsidx.name ELSE '(Partitioned)' END AS [File Group] FROM sys.tables AS tbl JOIN sys.indexes AS idx ON idx.object_id = tbl.object_id AND idx.index_id <= 1 LEFT JOIN sys.data_spaces AS dsidx ON dsidx.data_space_id = idx.data_space_id ORDER BY [File Group], [Table Name] |
Luego de ejecutar la consulta tendremos el siguiente resultado, una lista de nuestras tablas y sus respectivos FileGruop
Adicionalmente podemos dar click derechos sobre las tablas que deseamos mover y en la seccion de storage validar el grupo de archivos el cual esta alojado nuestra tabla, la cual deseamos mover
Paso 2:Creación de un nuevo grupo de archivos
Paso 3: Crear los archivos que se los cuales formaran parte del grupo de archivos
Paso 4: Mover una tabla existente al nuevo grupo de archivos
1 2 3 |
CREATE UNIQUE CLUSTERED INDEX PK_Department_DepartmentID ON HumanResources.Department(DepartmentID) WITH (DROP_EXISTING=ON,ONLINE=ON) ON SECONDARY |
Paso 5: Validamos que nuestro proceso tenga existo al realizar nuevamente el proceso del paso numero 1
Es posible que se pregunte cómo mover una tabla el grupo de archivos de una tabla sin un índice agrupado (es decir, un montón). Por lo que sé, la única manera es agregar temporalmente un índice agrupado en el nuevo grupo de archivos y luego soltarlo (si es necesario).
Por último, si está creando nuevas tablas, entonces no es necesario crearlas en el grupo de archivos PRIMARY y moverlas, solo puede crearlas directamente en el nuevo grupo de archivos.
para usar este partition necesitas el sql server Enterprise?
Si, men unicamente puedes en enterprice y developer, al igual que indices columnares y otras bondades unicamente disponibles en esa version