Particiones en SQL (Structured Query Language) Server

Anuncio
2013
Particiones
Israel Dimas Medina
Ingeniera en Sistemas Computacionales
25/03/2013
Instituto Tecnológico Superior de Poza Rica
Introducción
En este manual aprenderemos la creación de Particiones utilizando el manejador de
SQL Server 2008 Enterprise edition.
Es importante elegir una versión adecuada por que no todas nos permiten crear
particiones dentro de la base de datos.
La partición facilita el uso de tablas e índices grandes, ya que permite administrar y
tener acceso a subconjuntos de datos de forma rápida y eficaz, a la vez que
mantiene la integridad de la colección de datos.
Los datos de tablas e índices con particiones se dividen en unidades que pueden
propagarse por más de un grupo de archivos de la base de datos. Los datos se
dividen en sentido horizontal, de forma que los grupos de filas se asignan a
particiones individuales. La tabla o el índice se tratarán como una sola entidad lógica
cuando se realicen consultas o actualizaciones en los datos. Las particiones de un
índice o una tabla deben encontrarse en la misma base de datos.
ISC 6 “A” Edgar Israel Dimas Medina
Instituto Tecnológico Superior de Poza Rica
Desarrollo
La creación de particiones en una base de datos mejora el rendimiento y simplifica el
mantenimiento. Al dividir una tabla grande en tablas individuales más pequeñas, las
consultas que tengan acceso únicamente a una parte de los datos pueden ejecutarse
con mayor rapidez, ya que deben recorrer menos datos.
Se puede conseguir la creación de particiones sin dividir las tablas si las tablas se
colocan físicamente en unidades de disco individuales. La colocación de una tabla
en una unidad física y de las tablas relacionadas en una unidad independiente
puede mejorar el rendimiento de las consultas, debido a que, cuando se ejecutan
consultas que implican combinaciones entre las tablas, varios encabezados de discos
leen los datos al mismo tiempo. Se pueden utilizar grupos de archivos de SQL Server
para especificar los discos en los que se colocarán las tablas.
Por regla general, puede resultar adecuado crear particiones de una tabla grande si
se cumplen las dos condiciones siguientes:

La tabla contiene, o se espera que contenga, muchos datos que se utilizan de
formas diferentes.

Las consultas o las actualizaciones en la tabla no presentan el rendimiento que
se esperaba o los costos de mantenimiento superan los períodos de
mantenimiento predefinidos.
Particionamiento de tablas con índices
Id
Descripción
Fecha
$Partición
1
Octubre
23/10/2013
11
2
Marzo
10/04/2013
5
Fig1. Se obtiene una mejor estructura y las filas pertenecen a la misma tabla lógica, aunque la información
se encuentre almacenada físicamente en lugares distintos.
ISC 6 “A” Edgar Israel Dimas Medina
Instituto Tecnológico Superior de Poza Rica
A continuación veremos un ejemplo para entender el uso de las particiones:
Crear una tabla particionada que almacene la informacion correspondiente a un
detalle de kardex, para lo cual analice los posibles campos que conformaran dicha
tabla, se debera generar una particion para cada mes del anio, una vez hecho lo
anterior genere diferentes inserciones sobre dicha tabla y verifique que los registros
esten almacenados dentro de las particiones definidas por la funcion de particion la
cual debera elaborar para implementar dichas particiones.
Paso 1. Creación de base de datos
Lo primero que hacemos es crear una base de datos donde crearemos la partición
Create database MESES
use MESES
Paso 2. Creación de Partición
Debemos hacer antes de poder particionar tablas e índices en SQL Server, es crear una
Función de Partición la cual, tomará como entrada un único campo de la tabla a particionar.
CREATE PARTITION FUNCTION [pfMeses](datetime)
AS RANGE RIGHT FOR VALUES
('20130101','20130201','20130301','20130401','20130501','2013
0601',
'20130701','20130801','20130901','20131001','20131101','20131
201')
GO
Fig2. La función de partición se encuentra en la carpeta de almacenamiento.
ISC 6 “A” Edgar Israel Dimas Medina
Instituto Tecnológico Superior de Poza Rica
Paso 3. Crear Esquema de Partición
Es necesario crear el Esquema de Partición, el cual nos permitirá asignar a cada partición, el
Grupo de Ficheros (FileGroup) que deseamos que utilice para almacenar sus datos. Téngase
en cuenta, que al crear el Esquema de Particionamiento, tenemos que asociarlo a una
Función de Particionamiento. No es necesario que cada partición utilice un Grupo de
Ficheros (FileGroup) exclusivo para ella. De hecho, en muchos casos, se utiliza un único
FileGroup para todas las particiones.
CREATE PARTITION SCHEME [pSMeses]
AS PARTITION [pfMeses] ALL TO ([PRIMARY]);
Fig3. Se crea un esquema para mapear todas las particiones en un mismo FileGroup
Paso 3. Creación de una tabla
Creamos una tabla con un índice, de tal modo que ambos objetos utilizan el mismo Esquema
de Particionamiento.
CREATE TABLE dbo.Datos(
ID INT NOT NULL
,DESCRIPCION VARCHAR (100) NOT NULL
,FECHA DATETIME NOT NULL
, CONSTRAINT pk_Datos PRIMARY KEY NONCLUSTERED(ID,FECHA) ON
pSMeses(FECHA))
on pSMeses(FECHA)
go
ISC 6 “A” Edgar Israel Dimas Medina
Instituto Tecnológico Superior de Poza Rica
Paso 4. Insertar datos a la tabla y consultar
INSERT INTO dbo.Datos (ID,
'Octubre 2013','20131001')
INSERT INTO dbo.Datos (ID,
'Febrero 2012','20120202')
INSERT INTO dbo.Datos (ID,
'Enero 2013','20130114')
INSERT INTO dbo.Datos (ID,
'Abril 2013','20130405')
INSERT INTO dbo.Datos (ID,
'Marzo 2013','20130304')
INSERT INTO dbo.Datos (ID,
'Mayo 2012','20100501')
DESCRIPCION, FECHA) VALUES (1,
DESCRIPCION, FECHA) VALUES (2,
DESCRIPCION, FECHA) VALUES (3,
DESCRIPCION, FECHA) VALUES (4,
DESCRIPCION, FECHA) VALUES (5,
DESCRIPCION, FECHA) VALUES (6,
SELECT *, $PARTITION.pfMeses(FECHA)[PARTITION] FROM Datos
Fig4. Muestra los datos ingresados en formato fecha y la partición asignada.
Fig5. Por ultimo podemos observar que el plan de ejecución de la consulta es el mas bajo.
ISC 6 “A” Edgar Israel Dimas Medina
Instituto Tecnológico Superior de Poza Rica
Conclusión
El uso de las particiones es muy importante y nos facilita el menos coste posible de
estimación de una consulta a nivel PERFORMANCE.
Como observamos en el ejemplo anterior hay más maneras de poder crear una
partición o un esquema para las tablas e índices, todo depende de la necesidad que
tengamos o del problema que deseemos solucionar, por lo regular se utiliza en
sistema de control de ventas donde manejan ofertas en sus productos.
Por ultimo podemos definir que por medio de una partición podemos definir los
límites que utiliza SQL para dividir la información.
ISC 6 “A” Edgar Israel Dimas Medina
Instituto Tecnológico Superior de Poza Rica
Anexos.Vistas útiles para trabajar con tablas particionadas
--Caracteristicas de la particion
select * from sys.partitions
-- Permite ver la funcion de particion creada y su rango
select * from sys.partition_functions
-- Ver los parametros que puede recibir la particion
select * from sys.partition_parameters
--Muestra el rango de valores
select * from sys.partition_range_values
-- Caracteristicas del Esquema
select * from sys.partition_schemes
--Muestra el archvo de grupos asignado para la particion
select * from sys.filegroups
ISC 6 “A” Edgar Israel Dimas Medina
Descargar