Particionamiento y Bases de datos Parciales - SQL Server

Imagen de kenneth

Votar: 

Average: 4.8 (17 votes)

Esta presentación asume que ya la base de datos esta restaurada.
Para poder particionar de forma online una tabla ya existente usando la funcionalidad de particionamiento que brinda SQL Server apartir de 2005 y en las versiones enterprise, se necesita seguir lo siguientes 5 pasos principales:

  • Crear FileGroups
  • Asignar datafiles a los Filegroups
  • Crear la función de particionamiento
  • Crear el esquema de Particionamiento
  • Mover los datos

Crear FileGroups
Para crear los 4 filegroups utilizaremos la siguiente sintaxis:

  1.  
  2. USE master;
  3. -- Creemos 4 Filegroups con la intencion de partir nuestros datos en 4 particiones
  4. ALTER DATABASE SalesDB
  5.     ADD FILEGROUP SalesDBSales2012
  6. ALTER DATABASE SalesDB
  7.     ADD FILEGROUP SalesDBSales2011
  8. ALTER DATABASE SalesDB
  9.     ADD FILEGROUP SalesDBSales2010
  10. ALTER DATABASE SalesDB
  11.     ADD FILEGROUP SalesDBSales2009

Asignar datafiles a los Filegroups
Se van a asignar 1 datafile para cada uno de los filegroups creados, en este caso 2 datafiles van para C y los otros 2 a USB keys diferentes. La creación y la asignacion la realizamos mediante la siguiente sintaxis:

  1.  
  2. -- Agregemosle un archivo a cada filegroup
  3.  
  4. ALTER DATABASE SalesDB ADD FILE -- en la Unidad C
  5.         (NAME = N'SalesDBSales2012',
  6.         FILENAME = N'C:\presentations\partialDB\RestoredFiles\SalesDBSales2012.ndf',
  7.         SIZE = 100,
  8.         MAXSIZE = 120,
  9.         FILEGROWTH = 10)
  10. TO FILEGROUP SalesDBSales2012
  11.  
  12. ALTER DATABASE SalesDB ADD FILE -- Tambien En la unidad C
  13.         (NAME = N'SalesDBSales2011',
  14.         FILENAME = N'C:\presentations\partialDB\RestoredFiles\SalesDBSales2011.ndf',
  15.         SIZE = 100,
  16.         MAXSIZE = 120,
  17.         FILEGROWTH = 10)
  18. TO FILEGROUP SalesDBSales2011
  19.  
  20. ALTER DATABASE SalesDB ADD FILE -- Primer llave maya, Unidad E
  21.         (NAME = N'SalesDBSales2010',
  22.         FILENAME = N'E:\SalesDBSales2010.ndf',
  23.         SIZE = 100,
  24.         MAXSIZE = 120,
  25.         FILEGROWTH = 10)
  26. TO FILEGROUP SalesDBSales2010
  27.  
  28. ALTER DATABASE SalesDB ADD FILE -- Segunda Llave maya, Unidad G
  29.         (NAME = N'SalesDBSales2009',
  30.         FILENAME = N'G:\SalesDBSales2009.ndf',
  31.         SIZE = 100,
  32.         MAXSIZE = 120,
  33.         FILEGROWTH = 10)
  34. TO FILEGROUP SalesDBSales2009
  35. GO

Crear la función de particionamiento
En este caso se va a crear una funcion de particionamiento, usando la restriccion de rango hacia la derecha. Los rangos de particionamiento que se van a utilizar, son los siguientes 4:

  • Cuando el ID sea menor a 2,000,000
  • Cuando el ID sea mayor o igual a 2,000,000 y menor a 4,000,000
  • Cuando el ID sea mayor o igual a 4,000,000 y menor a 6,000,000
  • Cuando el ID sea mayor o igual a 6,000,000

La sintaxis a utilizar es la siguiente:

  1.  
  2. -- Crear la funcion de particionamiento con limitacion hacia la derecha
  3. CREATE PARTITION FUNCTION Sales4Partitions_PFN (INT)
  4. AS
  5. RANGE RIGHT FOR VALUES (2000000,                -- 2 millones
  6.                                                 4000000,                -- 4 millones
  7.                                                 6000000)                -- 6 millones
  8. GO

Crear el esquema de Particionamiento
Ya que la función de particionamiento tiene 4 rangos, y nosotros definimos 4 FileGroups, vamos a asignar un filegroup por rango
La sintaxis a utilizar es la siguiente:

  1.  
  2. -- asociamos la funcion de particionamiento con sus respectivos Filegroups
  3. CREATE PARTITION SCHEME [Sales4Partitions_PS]
  4. AS
  5. PARTITION [Sales4Partitions_PFN] TO
  6.                 (SalesDBSales2009,
  7.                 SalesDBSales2010,
  8.                 SalesDBSales2011,
  9.                 SalesDBSales2012)
  10. GO

Mover los datos
Ya que estamos utilizando una tabla que usa cluster index, lo unico que necesitamos hacer para mover los ratos es recrear el cluster index, como se muestra a continuación:

  1.  
  2. -- Ahora si .... Hora de mover los datos a nuestro esquema particionado
  3. CREATE UNIQUE CLUSTERED INDEX SalesPK
  4.         ON Sales (SalesID)
  5. WITH (DROP_EXISTING = ON, ONLINE = ON)
  6.         ON Sales4Partitions_PS (SalesID)
  7. GO

Ya hemos logrado tomar una tabla bastatante grande y distribuir los datos en multiples discos, para incrementar el performance de la base de datos.
Feliz Particionamiento!!!!!

Tags: