Existe un alto grado de afinidad entre el paralelismo y el particionamiento en Oracle, pues se usa el mapeo partición-dispositivo. Este es un nuevo beneficio de las tablas particionadas.
Consulta paralela: soporta paralelismo dentro de una partición, pero se puede usar también en tablas no particionadas.
Nuevas opciones, paralelizadas por partición (no hay paralelismo dentro de cada partición):
- INSERT... SELECT... con carga directa sobre tablas particionadas.
- DELETE sobre tablas particionadas.
- UPDATE sobre tablas particionadas.
- INSERT... SELECT... con carga directa sobre tablas no particionadas.
Las operaciones paralelas siempre tienen un proceso maestro que coordina los procesos esclavos. El tipo de operación determina cuándo y cómo se paraleliza la operación. Existen tres métodos de paralelización:
- Por rangos de rowid (sólo consultas paralelas): Se aplica a consultas de tablas particionadasy no particionadas. Proporciona paralelismo dentro de una partición: variosprocesos esclavos pueden estar accediendo a una partición
- Por procesos esclavos (INSERT en tablas no particionadas): Se aplica sólo enROWID, las filas se distribuyen entre los procesos paralelos que insertan en sendos segmentos temporales. Posteriormente, se asigna a cada fila de los segmentos temporales un rowid, y se mueven a la tabla destino tras la HWM. Ejemplo:
INSERT...SELECT... sobre tablas no particionadas. Como las nuevas filas no tienen
INSERT /*+PARALLEL(TABLA1,3)*/ INTO TABLA2 SELECT * FROM TABLA1;
- Por partición (sólo tablas particionadas): No hay paralelismo dentro de una partición para operaciones DML. Un proceso esclavo puede ser asignado a más de una partición para compartir recursos. Ejemplo, suponiendo que la tabla “pedido” está particionada:
UPDATE /*+PARALLEL(PEDIDO,3)*/ PEDIDO SET PENDIENTE = ʼFʼ;
Por defecto, el paralelismo está desactivado, pudiéndose hacer sólo consultas paralelas.
- La sentencia ALTER SESSION ENABLE PARALLEL DML, que permite la ejecución paralela de DML ha de ser la primera de la transacción.
- Cada operación PDML ha de terminar con COMMIT o ROLLBACK (si no, error). En una transacción, tras una DML en serie (salvo SELECT), se ignoran los hints o cláusulas paralelas, y se continúa en serial.
- El nuevo atributo de V$SESSION, PMDL_ENABLED, permite consultar si una sesión tiene habilitada el PDML. V$PQ_SESSTAT da información de las sentencias PDML.
0 comentarios:
Publicar un comentario en la entrada