Paralelización de operaciones

Slides:



Advertisements
Presentaciones similares
Transacciones y Concurrencia en Oracle
Advertisements

Diseño de Bases de Datos
integridad referencial
Administración de transacciones y bloqueos
Modificación de datos.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
SQL G r u p o
U NIDAD 2 L ENGUAJE DE DEFINICIÓN DE DATOS (DDL) 1.
RESPALDO.
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
ARQUITECTURA DE ORACLE
Introducción a los Sistemas de Bases de Datos Distribuidos
Base de Datos Relacional.
UNIDAD II Modelo de Datos.
4.3. Privilegios de usuarios
Funciones en lenguaje C
Cristian Alaniz - Daniel Hielpos. Agenda - Arquitectura - Tipos de Objetos - Lenguaje de Consulta - Transacciones - Backup y Recuperación - Seguridad.
Transacciones (MySQL). Definición: Conjunto de sentencias que se tratan como una sola. Comienzan con BEGIN/START TRANSACTION; Se puede confirmar (COMMIT)
SESIÓN 2. Completados por el tipo de objeto sobre el que actúan y el objeto concreto: CREATE DATABASE mibase ; Permite crear una base de datos llamada.
MySQL M.C. Pedro Bello López.
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
Bases de Datos Relacionales
Fragmentación de Datos
Universidad del Cauca – FIET – Departamento de Sistemas
D Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Uso de SQL*Plus.
Subconsultas Avanzadas
Componentes sintácticos
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
Bases de Datos Oracle Optimización
UNITA - IBARRA TRIGGERS
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
CAPITULO 10 Manejando Restricciones
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
T ABLESPACES EN O RACLE JULIÁN JOSÉ TORRES ZABALA PEDRO JAVIER SILVA CRISTIAN CAMILO RAMIREZ JULIAN ARJONA UNIVERSIDAD DEL TOLIMA INGENERIA DE SISTEMAS.
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
LENGUAJES DE PROGRAMACIÓN
Elaborado por: Guillermo Baquerizo I Término
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Manipulación de Datos Conceptos básicos.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 19 Extensiones de Oracle 9i para las sentencias DML y DDL.
Triggers(Disparadores)
CAPITULO 4 Despliegue de Datos Desde Múltiples Tablas
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 12 Otros Objetos de la Base de Datos.
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda.
STRUCTURED QUERY LANGUAGE
INSTRUCCIONES Elaboración de la Presentación:
Introducción a Bases de Datos en Microsoft Access Programación de Computadoras 2 Sección: P.
LENGUAJE SQL.
FRAGMENTACION EN ORACLE
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
SQL Sigla del nombre “Structured Query Language”.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 0 Introducción.
INSTRUCCIONES Elaboración de la Presentación:
Introducción a la Optimización de Consultas. Francisco Moreno.
Prof. De Bases de Datos: Lcdo. Luis Peña. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query.
Unidad 4 SEGURIDAD 4.1 Tipos de usuarios
Laboratorio de optimización de BD
UNIVERSIDAD TECNOLOGICA DE IZUCAR DE MATAMOROS TECNOLOGIAS DE LA INFORMACION Y COMUNICACIÓN BASE DE DATOS PARA APLICACIONES MTRO: GONZALO ROSAS CABRERA.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Comandos de SQL Prog. Orientada a Eventos. Inserción de datos (INSERT) INSERT….VALUES INSERT INTO Tabla1 (Columna1, Columna2…) VALUES (‘ValorAlfa’, ValorNum…);
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
Unidad 6. Tema 4. Lenguaje de consultas SQL
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Copyright  Oracle Corporation, All rights reserved. 12 Otros Objetos de la Base de Datos.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Transcripción de la presentación:

Paralelización de operaciones

Objetivos Describir las ventajas del lenguaje de manipulación paralela de datos (PDML) Usar hints y la cláusula PARALLEL para definir el grado de paralelismo de una sentencia DML Conocer las restricciones del uso del PDML Ejecutar sentencias DML en modo directo y en tablas particionadas Consultar el DD en relación con el PDML

Introducción Las operación DML paralelas aceleran el acceso a grandes tablas, cuando se modifican al menos un 1% de las filas Útil en entornos DSS o Datawarehouse, y en ciertas operaciones OLTP Oracle8 complementa las consultas paralelas disponibles en v7 con DML paralelo Muchas operaciones paralelas requieren tablas e índices particionados, excepto INSERT... SELECT...

Beneficios del DML paralelo La principal ventaja es el RENDIMIENTO: el paralelismo puede acelerar la velocidad de proceso de transacciones DML P99S1 UPDATE PEDIDO SET PENDIENTE = ’F’; P99S2 P99ERR P99S1 UPDATE /*+PARALLEL(PEDIDO,3)*/ PEDIDO SET PENDIENTE = ’F’; P99S2 P99ERR

Beneficios del DML paralelo Ya no es necesario: que múltiples sesiones ejecuten las operaciones sobre los mismos datos conocer los rangos de rowid o de claves para dividir el trabajo coordinar manualmente las sentencias que se ejecutan en paralelo Con Parallel DML se ejecuta una sentencia como una simple transacción sobre una única sesión: el control de la atomicidad de la transacción es máximo (commit/rollback único)

Beneficios del PDML Alto grado de afinidad: Oracle usa el mapeo partición-dispositivo Beneficios sobre tablas particionadas Instancia 1 P99S1 P99S2 Instancia 2 P99ERR

Operaciones soportadas en paralelo Consulta paralela (como en v7), soporta paralelismo dentro de una partición 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

Tipos de paralelismo Las operaciones paralelas siempre tienen un proceso maestro que coordina los proceso esclavos El tipo de operación determina cuándo y cómo se paraleliza la operación Tres métodos de paralelización Por rangos de rowid (sólo consultas paralelas) Por procesos esclavos (INSERT en tablas no particionadas) Por partición (sólo tablas particionadas) PE1 Maestro PE2 PE3

Paralelización por rangos de ROWID Se aplica a consultas de tablas particionadas y no particionadas Proporciona paralelismo dentro de una partición: varios procesos esclavo pueden estar accediendo a una partición PE1 P99S1 AAAAT9AABAAABaIAAv PE2 AAAAT9AABAAABaLAAY ... PE3 P99S2 PE4 FFAAT9AABAAABaIAAv PE5 P99ERR FFAAT9AABAAABaLAAY ... PE6

Paralelización por procesos esclavo Se aplica sólo en INSERT...SELECT... sobre tablas no particionadas Como las nuevas filas no tienen ROWID, las filas se distribuyen entre los procesos paralelos que insertan en la tabla destino tras la HWM INSERT /*+PARALLEL(TABLA1,3)*/ INTO TABLA2 SELECT * FROM TABLA1; Tabla2 Tabla1 PQ1 PE1 PQ2 PE2 PQ3 PE3

Paralelización por particiones Se aplica sólo a 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 UPDATE /*+PARALLEL(PEDIDO,3)*/ PEDIDO SET PENDIENTE = ’F’; PE1 P99S1 P99S2 PE2 P99ERR PE3

Comandos paralelos Tipo de operación PARALLEL QUERY PARALLEL INSERT... SELECT... Direct Load (tablas particionadas) PARALLEL DELETE (tablas particionadas) PARALLEL UPDATE (tablas particionadas) PARALLEL INSERT... SELECT... Direct Load (tablas no partitionadas) Paralelizado por ROWID PARTICIÓN PROCESOS ESCLAVO

Parallel INSERT Direct Load Las filas se insertan en un segmento temporal El segmento temporal se añade luego al segmento de datos por encima de la HWM Después, se asigna a cada fila un rowid y se mueve la HWM (similar al SQL*Loader) INSERT /*+PARALLEL(PEDIDO,3)*/ INTO PEDIDO SELECT * FROM PEDIDOS_PENDIENTES; P99S1 PE1 S. Temp. HWM P99S2 S. Temp. PE2 HWM P99ERR S. Temp. PE3 HWM

Parallel DML: Activación Por defecto está desactivado, pudiéndose hacer sólo consultas paralelas La sentencia ALTER SESSION 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 continua en serial ALTER SESSION ENABLE PARALLEL DML;

Parallel DML: Ejemplo COMMIT; ALTER SESSION ENABLE PARALLEL DML; 1 SELECT * FROM PEDIDO WHERE PENDIENTE = ’T’; 2 UPDATE PEDIDO SET PENDIENTE = ’F’; 3 INSERT /*+PARALLEL(PEDIDO,3)*/ INTO PEDIDO SELECT * FROM PEDIDOS_PENDIENTES; 1. La sentencia SELECT puede ser ejecutada y no afecta a la paralelización de la siguiente 2. La sentencia UPDATE se ejecuta en serie, por lo que se ignora el hint paralelo del INSERT, que se ejecutará también en serie 3. Si el UPDATE se hubiera ejecutado en paralelo, el INSERT devolvería el error ORA-12830

Parallel DML: Desactivación COMMIT; ALTER SESSION DISABLE PARALLEL DML; 1 SELECT /*+PARALLEL(PEDIDO,3)*/ * FROM PEDIDO WHERE PENDIENTE = ’T’; 2 UPDATE /*+PARALLEL(PEDIDO,3)*/ PEDIDO SET PENDIENTE = ’F’; 3 COMMIT; 1. La sentencia SELECT puede ser ejecutada en paralelo (parallel query) 2. El UPDATE se ejecuta en serie (PDML desactivado) 3. Con PDML activado, el UPDATE se hubiera ejecutado en paralelo, y después siempre COMMIT/ROLLBACK

Cláusula PARALLEL NOPARALLEL PARALLEL ( DEGREE ) integer DEFAULT INSTANCES integer DEFAULT En las sentencias CREATE/ALTER, indica el grado de paralelismo de sentencias DML DEGREE:el número de CPUs INSTANCES: nodos de base de datos distribuida Los hints paralelos tienen preferencia sobre la especificación de esta cláusula ALTER TABLE PEDIDO PARALLEL (DEGREE 4 INSTANCES 3);

Hints de PDML UPDATE tabla /*+ PARALLEL (m,n) */ DELETE FROM tabla /*+ PARALLEL (m,n) */ INSERT INTO tabla /*+ APPEND NOAPPEND */ PARALLEL (m,n) El hint PARALLEL sustituyen los valores por defecto de la cláusula PARALLEL para la definición de la tabla APPEND realiza la carga en modo directo (paralelizada) NOAPPEND realiza inserciones normales en modo serial

Grados de paralelismo El número ideal de procesos esclavos paralelos que trabajan sobre una sentencia viene determinado por los siguientes factores: Los valores DEGREE e INSTANCES especificados en la cláusula PARALLEL o en el hint El número de CPUs de la máquina y de instancias El número de particiones a ser accedidas El mínimo valor del parámetro FREELISTS (listas de transacciones libres) en la cláusula STORAGE de entre todos los índices globales a ser actualizados El número real de procesos está limitado por la disponibilidad de las instancias, y el mínimo se calcula a partir del parámetro PARALLEL_MIN_PERCENT

SELECT paralelo Las consultas se paralelizan cuando: Hay un hint en la sentencia SELECT Se ha especificado la cláusula PARALLEL para la tabla Cuando se acceden a varias tablas, se elige de todas ellas el hint o valores PARALLEL que definan un mayor grado de paralelismo, como referencia para el grado total de paralelismo de la consulta

INSERT...SELECT... paralelo Se pueden especificar hints para el INSERT y para el SELECT, y ambas tablas pueden tener sus respectivas cláusulas PARALLEL Cuatro factores pueden influenciar el paralelismo de la sentencia entera, con esta preferencia: hint del INSERT cláusula PARALLEL de la tabla donde se inserta hint del SELECT máximo paralelismo definido en las clásulas PARALLEL de las tablas que se consultan

INSERT...SELECT...: Ejemplo INSERT /*+PARALLEL(PEDIDO,3)*/ INTO PEDIDO SELECT /*+PARALLEL(PEDIDOS_PENDIENTES,5)*/ * FROM PEDIDOS_PENDIENTES; Suponemos que se ha activado el PDML Basado en las reglas de preferencia, el grado de paralelismo de la sentencia entera es 3

UPDATE y DELETE paralelo La sintaxis no cambia al añadir la posibilidad de ejecución en paralelo El mismo paralelismo se aplica tanto para la consulta previa la tabla como al realizar la actualización Si se definen subconsultas con sus propios hints y cláusulas PARALLEL, estos no afectan a la paralelización de la operación UPDATE/DELETE, ya que esta decisión se toma independientemente de la porción de consulta y viceversa Un UPDATE se paraleliza aunque la tabla se escanee en modo serial

UPDATE/DELETE: Ejemplo UPDATE /*+PARALLEL(PEDIDO,4)*/ PEDIDO SET PENDIENTE = ’F’; DELETE /*+PARALLEL(PEDIDO,4)*/ FROM PEDIDO WHERE NUM_PED > 600; Suponemos que se ha activado el PDML Basado en las reglas de preferencia, el grado de paralelismo de ambas sentencias es 4

Diccionario de datos El nuevo atributo de V$SESSION es PMDL_ENABLED que permite consultar si una sesión tiene habilitada el PDML V$SESSION SADDR SID USERNAME SCHEMANAME ... PDML_ENABLED SELECT STATISTIC, LAST_QUERY, SESSION_TOTAL FROM V$PQ_SESSTAT WHERE STATISTIC = ’DML Parallelized’; SELECT STATISTIC, VALUE FROM V$PQ_SYSSTAT WHERE STATISTIC = ’DML Initiated’; Se han añadido nuevas filas a V$PQ_SESSTAT para consultar las sentencias PDML

Opción LOGGING/NOLOGGING Es posible desactivar el uso de redo log para ciertas operaciones paralelas, como INSERT...SELECT... para reducir el tiempo de proceso de la sentencia Se especifica a nivel del objeto (no de la sentencia) A nivel de tablespace, determina el valor por defecto para los objetos allí creados ALTER TABLE PEDIDO NOLOGGING;

PDML y segmentos de rollback UPDATE /*+PARALLEL(PEDIDO,4)*/ PEDIDO SET PENDIENTE = ’F’; PE1 PE2 PE4 PE3 RS1 RS2 RS3 Cada proceso esclavo es tratado como una transacción independiente La atomicidad de la transacción original se consigue con un mecanismo de commit en dos fases que valida los cambios realizados por los procesos esclavos Con PDML no se admite el uso de la sentencia SET TRANSACTION USE ROLLBACK SEGMENT, así que no se puede controlar qué segmento de rollback se asigna a cada proceso esclavo

Restricciones generales Cada operación PDML deben ser validada después de su ejecución, con un COMMIT o un ROLLBACK El soporte de las restricciones es limitado: si alguna se viola, la sentencia se ejecuta en serial (no da error) no se permiten: claves ajenas reflexivas, integridad referencial ON DELETE CASCADE, ni integridad diferida No se permite: PDML con LOCK TABLE o SELECT FOR UPDATE en la misma transacción, porque PDML realiza bloqueos exclusivos PDML sobre índices bitmap, tablas con LOB o tipos de objeto, tablas clusterizadas o con triggers activados INSERT paralelo sobre índices globales (evita auto-deadlocks) UPDATE paralelo sobre índices globales únicos

Recuperación en PDML Recuperación de transacción Tras un fallo de una transacción PDML, SMON recupera en modo serial; mientras tanto, los recursos quedan bloqueados Para acelerar este proceso, se puede volver a ejecutar la sentencia PDML y después hacer COMMIT o ROLLBACK Recuperación de proceso Tras un fallo en un proceso esclavo, PMON hace rollback del trabajo de ese proceso, y otro proceso esclavo hace rollback de la operación completa Si fallan varios procesos esclavos, PMON cancela la operación completa de forma serial Si el proceso maestro falla, el PMON lo recupera y todos los procesos esclavos hacen rollback El ROLLBACK normal se realiza en paralelo

Resumen El paralelismo acelera las grandes operaciones DML sobre grandes tablas e índices Es fácil de usar, definiendo la cláusula PARALLEL a nivel de objeto, o con los hits para cada sentencia La afinidad es gestionada por el servidor El servidor también controla las transacciones Hay que tener cuidado con las restricciones