Optimización de Rendimiento con Particionamiento en Oracle

Hola a todos! Hoy os vamos a hablar sobre cómo mejorar el rendimiento mediante el particionamiento en Oracle.

¿Qué es el particionamiento?

El particionamiento Oracle es una veterana utilidad orientada originalmente a entornos Data Warehouse aunque es también implementable para cuestiones de rendimiento y gestión de bloqueos.
La principal característica intrínseca más destacada en mi opinión, es LA INDEPENDENCIA PARTICIONAL. Una tabla particionada en realidad es un conjunto de tablas lógicas que se gestiona como un único objeto físico. Esto ofrece la posibilidad de estar operando en una partición y a la vez en otra sin que se generen bloqueos a nivel de fila o tabla.
Las tablas particionadas permiten índices locales a la partición o globales a la tabla, la exportación e importación de particiones individuales y la encapsulación de estructura de cara a la aplicación.
Existen varios tipos de particiones, aunque el objeto de este artículo es el uso del particionamiento por INTERVALO basándonos en fechas.

Descripción del escenario

Para este caso la casuística es una tabla mixta OLTP/DW con alto grado de inserciones, actualizaciones y eliminaciones de registros que registra problemas de rendimiento y bloqueos.
La actuación sobre dicha tabla va a ser totalmente online y transparente para la aplicación y no implica pérdida de servicio o rendimiento.

Pasos para la elaboración

Paso 1: Creación de la tabla interina con partición de intervalos.

Se va a crear una partición desde la fecha en la que se le indica por cada día, en este ejemplo es por cada día automática, a partir de las fechas indicadas en las cláusulas.

Paso 2: Iniciar el proceso de redefinición de la tabla.

En este proceso, tiene que iniciar y cerrar con la siguiente consulta.

Particionamiento Oracle

Una vez iniciado el proceso, si pasara cualquier otra casuística no controlada, se puede abortar el proceso ejecutando lo siguiente:

Paso 3: Copiar las dependencias

En este paso se copia todas las dependencias del objeto origen (roles, permisos, referencias, etc) de la tabla

Consulta de control para ver si hubo errores en la copia de la tabla origen a la tabla destino de dependencias.

Paso 4: Sincronización internamente de los objetos

Se va a pasar de un objeto a otro, se sincroniza internamente del Objeto A (tabla de origen) al Objeto B (tabla de Destino Interina que acabamos de crear).

Obs: Las 2 tablas se quedan en la BD ninguna se borra. Hasta este punto se puede abortar todo el proceso con el DBMS_REDEFINITION.ABORT_REDEF_TABLE

Paso 5: Finalización del Proceso

Una vez finalizado el proceso de sincronización Ejecutamos el DBMS_REDEFINITION.FINISH_REDEF_TABLE y completaría de forma interna el proceso de redefinición de la tabla y registra en el diccionario la nueva tabla de origen con particionamiento automático de cada día.

Particionamiento Oracle

Cuestiones finales

Este tipo de particionamiento sirve para crearlo por día, mes y año, todo depende del tipo de partición que necesites.

Esperamos que os haya resultado de interés. Si tenéis problemas con vuestro entorno Oracle, no dudéis en contactar con nosotros, estaremos encantados de ayudaros. Podéis echarle un vistazo a nuestros servicios de Soporte Oracle o de Consultoría.

¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.

Sígue a GPS en LinkedIn

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *