1. Partitioning
Par titio ning
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
2. De que vamos a hablar cuando hablemos de particionamiento de tablas
• Fundamentalmente del trabajo con grandes volúmenes de datos
• Como mejorar su administración
• Como mejorar su performance
• Como entender el negocio mirando hacia adelante
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
3. Introducción al particionado de tablas
• Oracle incorpora el particionado en la versión 8.0
• La versión 11g es la 8va generación de particionados
• Y es la que mayores opciones presenta, manteniendo
todas las particularidades sus versiones anteriores
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
4. ¿Qué significa particionado de tablas?
• Básicamente de que una determinada tabla se subdivida en
partes más pequeñas a partir de un criterio establecido
Criterio de
particionamiento
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
5. Particionado en acción
En el ejemplo tenemos dos tabla de similares características, una particionada
‘SALES’
Otra no ‘SALES_NP’
Select Table_Name, Num_Rows From User_Tables
Where Table_Name ='SALES_NP'
Union
Select Table_Name, Num_Rows From User_Tables
Where Table_Name ='SALES'
Ambas tablas tienen la misma cantidad de filas
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
6. Particionado en acción
Ahora veremos la verdadera distribución de los datos en la tabla particionada
Select Table_Name, Partition_Name,
Num_Rows
From User_Tab_Partitions
Where Table_Name='SALES'
En este caso el criterio de particionamiento
es sobre un eje de tiempo pero no homogéneo
eso lo veremos después.
Lo que observamos es la distribución de
registros en distintas particiones.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
7. Particionado en acción
• Las sentencias DML no cambian
• La sentencia Select puede o no indicar una partición especifica
• Si la indica y el dato existe actúa más rápido
• Si la indica y el dato no existe no devuelve ningún registro
aunque existe en otra partición.
• Una sentencia Insert, Update, Merge o Delete no requiere que se indique
la partición.
La siguiente sentencia cuenta los registros existentes en la partición llamada
Sales_Q1_1998
Select Count(1) From Sales Partition(Sales_Q1_1998)
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
8. Estrategia de particionamiento
• ¿Qué implica genera una estrategia de particionamiento
• Conocer el negocio
• Tener información de cómo estábamos y hacia donde vamos
• Mejorar la respuesta en la obtención de información
• Saber que información es actual y requerida y cual no
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
9. Estrategia de particionamiento
• Esto implica saber que las particiones no son estáticas y están
en función del negocio.
• Mayor granulación para datos más nuevos
• Menor granulación para datos menos accesibles
• Mantener una política de actualización de las particiones
• Generar las particiones necesarias y útiles
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
10. Cuando particionar una tabla
Aquí están algunas sugerencias para el momento de la
partición de una tabla:
• Las Tablas de más de 2 GB se debe considerar siempre
como candidatos para particionamiento.
• Las tablas que contienen datos antiguos, en los que se agregan
nuevos datos.
Un ejemplo típico es un cuadro histórico en el que sólo el mes en curso
de datos es actualizable y los otros 11 meses son de sólo lectura.
• Cuando el contenido de una tabla debe ser distribuido a través de
diferentes tipos de dispositivos de almacenamiento.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
11. Tipos de particionamientos
Oracle soporta dos tipos de particiones
• Particionamiento simple tiene un
único criterio de particionamiento
y no cuenta con particiones hijas
dentro de la partición.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
12. Tipos de particionamientos
Oracle soporta dos tipos de particiones
• Particionamiento compuesto
Cada partición cuenta a su vez
con particiones.
En la figura la partición principal
es por trimestre del año 2010.
A su vez esa partición tiene una
subpartición
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
13. Métodos de particionamientos
Los tipos de particionamiento simple soportan 3 métodos
Particionamiento por Rango
Particionamiento Hash
Particionamiento por Lista
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
14. Métodos de particionamientos
• Particionamiento por Rango
Una tabla tiene la siguiente cantidad de registros agrupados por año
Vamos a crear una tabla con dos particiones una para el año 1998 y
otra para el año 1999.
Veremos que pasa con los datos.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
15. Métodos de particionamientos
• Particionamiento por Rango
Sintaxis
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
16. Métodos de particionamientos
• Particionamiento por Rango
Este es el contenido en años de la
Tabla Sales
Partición existente para estos datos
Partición no existente para estos datos
En este caso Oracle da como resultado el siguiente error
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
17. Métodos de particionamientos
• Particionamiento por Rango
Solucionando el problema de que una Key quede fuera de rango
Opera como un Else que permite que valore que no tienen
a una partición sean insertados en esta.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
18. Métodos de particionamientos
• Particionamiento por Rango
Solucionando el problema de que una Key quede fuera de rango
Recopilamos estadísticas para la tabla
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
19. Métodos de particionamientos
• Particionamiento por Rango
Veamos el resultado
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
20. Métodos de particionamientos
• Particionamiento por Rango
Actualización de una columna clave
Genera el siguiente error
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
21. Métodos de particionamientos
• Particionamiento por Rango
Actualización de una columna clave
Para evitar el error anterior se coloca la clausula
ENABLE ROW MOVEMENT
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
22. Métodos de particionamientos
• Particionamiento por Rango
Actualización de una columna clave
El total de registros a modificar es de 11631
Actual Anterior
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
23. Métodos de particionamientos
• Particionamiento Hash
El nombre de la partición es creado por el sistema
Sintaxis
Opcional, indica los tablespaces donde se almacenará cada partición
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
24. Métodos de particionamientos
• Particionamiento Hash
El nombre de la partición es creado por el sistema
Sintaxis
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
25. Métodos de particionamientos
• Particionamiento Hash
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
26. Métodos de particionamientos
• Particionamiento Hash
Distribución de la carga en las particiones
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
27. Métodos de particionamientos
• Particionamiento Hash
Actualización de columna key
Como en el caso del particionamiento por Rango
Para actualizar una columna key se debe colocar la clausula
ENABLE ROW MOVEMENT
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
28. Métodos de particionamientos
• Particionamiento por lista
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
29. Métodos de particionamientos
• Particionamiento por lista
Distribución de los datos
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
30. Métodos de particionamientos
• Particionamiento por Referencia
Este particionamiento toma la referencia padre/hijo de dos tablas para
crear una partición en el hijo tomando la referencia a la tabla padre
El ejemplo muestra la tabla padre que tiene los departamentos de la
empresa particionada por su ubicación.
Y la tabla de empleados que se particiona por la referencia de la
foreing key.
La tabla empleados hereda las particiones que tenga la tabla de
departamentos
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
31. Métodos de particionamientos
• Particionamiento por Referencia
Tabla departamentos
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
32. Métodos de particionamientos
• Particionamiento por Referencia
Tabla Empleados
La columna que se referencia en la partición debe tener la restricción
NOT NULL
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
33. Métodos de particionamientos
• Particionamiento por Referencia
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
34. Métodos de particionamientos
• Particionamiento por Sistema
Este tipo de particionamiento no cuenta con clave por lo cual se
El manejo de donde insertar un dato debe ser gestionado por la
aplicación.
Lo mismo que cuando se quiere recuperar un juego de registros, se
debe indicar en que partición está almacenado el mismo.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
35. Métodos de particionamientos
• Particionamiento por Sistema
Este tipo de particionamiento no cuenta con clave por lo cual se
El manejo de donde insertar un dato debe ser gestionado por la
aplicación.
Lo mismo que cuando se quiere recuperar un juego de registros, se
debe indicar en que partición está almacenado el mismo.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
36. Métodos de particionamientos
• Particionamiento por Sistema
CREATE TABLE systab (c1 integer, c2 integer)
PARTITION BY SYSTEM
(
PARTITION p1 TABLESPACE tbs_1,
PARTITION p2 TABLESPACE tbs_2,
PARTITION p3 TABLESPACE tbs_3,
PARTITION p4 TABLESPACE tbs_4
);
INSERT INTO systab PARTITION (p1) VALUES (4,5);
INSERT INTO systab PARTITION (p2) VALUES (150,2);
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
37. Métodos de particionamientos
• Creando particiones en tablas no particionadas.
Toda tabla no particionada puede ser modificada y agregar
particiones, eliminar particiones o modificar las particiones existentes.
Creando particiones en tabla no particionada
• Un método puede ser crear una tabla con la misma estructura de
la actual, insertar los datos en ella.
•Dropear la tabla Origen
•Crearla con las particiones
•Volver a insertar los registros en la de origen con las particiones
creadas.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
38. Métodos de particionamientos
• Creando particiones en tablas no particionadas.
Veamos con ejemplos, la tabla a particionar es la tabla Sales_NP
Es conveniente crear en primer instancia la tabla como Nologging
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
39. Métodos de particionamientos
• Creando particiones en tablas no particionadas.
Veamos con ejemplos, la tabla a particionar es la tabla Employees en
este caso usamos un package logeados con privilegios de sysdba
Ejecutamos la siguiente sentencia:
Si la ejecución indicará un error indica que esa tabla no se puede
particionar,
En caso que se ejecute satisfactoriamente creamos una tabla
con idénticos atributos y con las particiones necesarias.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
40. Métodos de particionamientos
• Creando particiones en tablas no particionadas.
En caso que se ejecute satisfactoriamente creamos una tabla
con idénticos atributos y con las particiones necesarias.
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
41. Métodos de particionamientos
• Creando particiones en tablas no particionadas.
Validar si se puede particionar la tabla.
Comenzamos el proceso de redefinición de la tabla
Generamos las constraint que no existían en la tabla de auxiliar
Finalizamos el proceso y borramos al tabla auxiliar
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
42. Métodos de particionamientos
• Agregar particiones a una tabla particionada.
Tabla particionada por Rango
Tabla particionada Hash
Tabla Particionada por Lista
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza
43. Métodos de particionamientos
• Unir particiones a una tabla particionada.
Tabla particionada por Rango
Tabla particionada Hash
Tabla Particionada por Lista
Video conferencia Partitioning 11g 16/03/2012 Gerardo Daniel Tezza