sobre PARALELISMO en edición ENTERPRISE

anruben
Desconectado
Ingresó: Sep 27 2010

Buenos dias

Tenemos dudas sobre el funcionamiento de las características PARALLEL QUERY y PARALLEL DDL EXECUTION presentes en Enterprise

Si no me equivoco puede forzarse la ejecución en paralelo de consultas utilizando el hint /*+ PARALLEL */ ???

Es imprrescindible para ello que las tablas se hayan creado con el atributto PARALLEL ???

El optimizador decide si usar o no paralelismo en la ejecución, pero.... puede forzarsele a usarlo o bloquearse dicho uso para siempre ???

Puede el optimizador ejecutar en paralelo aunque las tablas no tengan el atributo parallel ???

Qué parametros de la base de datos afectan a este comportamiento del paralelismo ???

Son muchas preguntas pero creo es un tema que no está claro y afloran muchas dudas ...

gracias y saludos

jcols
Desconectado
Ingresó: Oct 20 2009
Sobre Paralelismo

Hola:

Mencionas varios conceptos y preguntas. Vamos a intentar aclararlo.

Parallel Query es la facultad de realizar consultas (SELECT) con paralelismo.

Parallel DDL Execution es la facultad de realizar operaciones DDL (CREATE..., ALTER...) con paralelismo,

Parallel DML es la facultad de realizar operacions de modificación del contenido de tablas (INSERT as SELECT, UPDATE, MERGE o DELETE) con paralelismo.

El paralelismo se caracteriza en que la Base de Datos divide el trabajo total en N partes y todas estas partes se realizan de forma paralela o concurrente con la ayuda de varios procesos eslavos (slaves).

  • El valor N es un entero que indica el grado de paralelismo o bien el número de partes en que la Base de Datos dividirá el trabajo.
    • Una sentencia SELECT nunca utilizará 2*N procesos esclavos.
    • Una sentencia DML o DDL utilizaro máximo N procesos concurrentes.
    • Una sentencia CREATE... AS SELECT , INSERT... AS SELECT puede precisar hast 3*N procesos concurrentes (2 para el SELECT + 1 para el INSERT o CREATE)
  • El parámetro PARALLEL_MAX_SERVERS limita el número máximo total de slaves que se pueden utilizar a nivel de cada instancia.

    • Si el número de procesos no es suficiente según elgrado de paralelismo indicado, la Base de Datos reducirá el grado de paralelismo hasta un máximo de PARALLEL_MIN_PERCENT.Si esto no fuera suficiente, la Base de Datos reportará un error.

La Base de Datos solo utilizará paralelismo cuando:

  • Para Sentencias SELECT
    • Cuando las tablas tengan indicdo un grado de paralelimo, ya sea al crearse ya sea mediante un ALTER TABLE. Si la tabla tiene definido paralelismo, por defecto la Base de Datos lo va a utilizar en las consultas.
    • El valor de paralelimo por defecto se pude modificar mediante hintsSELECT /*+ parallel(a,4) parallel(b) noparallel(c) */
  • Para sentencias DDL
    • Se debe especificar el grado de paralelismo en la propia sentencia: CREATE INDEX ... PARALLEL.
  • Para sentecnias DML
    • Previamente se debe activar la posibilidad: ALTER SESSION ENABLE PARALLEL DML
    • La sentecnia DML con paralelismo debe ser la única de la transacción:
      • Es conveniente añadir un COMMIT antes y después de la sentencia
    • Se debe indicar la paralelización mediane un hint: INSERT /*+ parallel(a,4) */ INTO XXX a SELECT...

La utilización de paralelismo se puede forzar: ALTER SESSION FORCE PARALLEL DML

El grado de paralelimo se puede definir por defecto. En este caso, no se indica un grado explícito y a Base de Datos utiliza un valor PARALLEL_THREADS_PER_CPU * NUM_CPUs

Espero que te sirva como introducción.

Saludos

Josep Cols

Visita mi álbum de fotos en http://josep.cols.cat  o bien http://www.mialbumgratis.com/fotos/album/josepcols/

anruben
Desconectado
Ingresó: Sep 27 2010
queda mas claro ....

Muchas gracias

Como muchos conceptos de Oracle, no lo tenia claro y esto aporta más luz

saludos