Particionamiento en SQL Server

Breve ejemplo de particionamiento en SQL Server.

 

---Paso 1 : creacion de BD particionada.
IF EXISTS ( SELECT NAME FROM sys.DATABASES WHERE name = N'datastage')
    DROP DATABASE datastage;
go
CREATE DATABASE datastage
ON PRIMARY
    (name='datastage_parte1' ,
    filename = 'c:\datos\primario\datastage_part1.mdf' ,
    size = 60,
    MAXSIZE = 150,
    filegrowth = 1),
    filegroup datastage_parte2
    (name= 'datastage_parte2',
    filename = 'c:\datos\secundario\datastage_part2.mdf',
    size = 60,
    MAXSIZE = 150,
    FILEGROWTH = 1 );
GO

USE datastage
GO

--- PASO 2: CREAR PARTICION CON UNA FUNCION DE RANGO

CREATE PARTITION FUNCTION datastage_particionRango (INT)
AS RANGE LEFT FOR
    VALUES (10);
GO

--- PASO 3 : ATACHAR PARTICION SCHEMA AL FILEGROUPS

USE DATASTAGE;
GO

CREATE PARTITION SCHEME Datastage_partitionSchema
AS PARTITION datastage_particionRango
TO ([PRIMARY] , Datastage_parte2);
GO

---Paso 4 tabla de test en particion

CREATE TABLE test(
    ID INT NOT NULL,
    fecha datetime) ON datastage_partitionSchema(id);
go

-- Paso 5 crear indices agrupados en una tabla particionada.
CREATE UNIQUE CLUSTERED INDEX Idx_test
ON test(ID)
ON datastage_partitionSchema(id);
GO

--- Paso 6 insertar datos aplicando rango
--- Particion 1 contiene rangos de id del 1 al 10
--- Particion 2 contiene el resto de los rangos
INSERT INTO Test(ID, Fecha) -- Insertado Particion 1
VALUES (1,GETDATE());
INSERT INTO Test(ID, Fecha) -- Insertado Particion 2
VALUES (11,GETDATE());
INSERT INTO Test (ID, Fecha) -- Insertado in Particion 2
VALUES (12,GETDATE());
GO

--Verificacion de registros en las particion1 y 2
SELECT *
FROM sys.partitions
WHERE OBJECT_NAME(OBJECT_ID)='Test';
GO