Métodos de proceso en paralelo
En las figuras de este tema se muestra una comparación entre los métodos en paralelo y la captación secuencias y entre ellos.
Supongamos que una consulta accede a un espacio de tabla que tiene tres particiones: P1, P2 y P3. Las notaciones P1, P2 y P3 son particiones de un espacio de tabla. R1, R2, R3, etc, son solicitudes de captación previa secuencial. Por ejemplo, la combinación P2R1 significa la primera solicitud procedente de la partición 2.
Proceso secuencial
En la figura siguiente se muestra un proceso secuencial. Con el proceso secuencial, Db2 toma las tres particiones en orden, completando la partición 1 antes de empezar a procesar la partición 2 y completando 2 antes de iniciar 3. La captación previa secuencial permite solapar el proceso de CP con operaciones de E/S, pero las operaciones de E/S no se solapan entre sí. En el ejemplo de la siguiente figura, una solicitud de captación previa tarda más que el tiempo en procesarse. El procesador espera con frecuencia E/S.
Procesamiento paralelo de CP
En la siguiente figura se muestra un proceso de CP en paralelo. Con el proceso de CP en paralelo, Db2 puede utilizar varias tareas paralelas para procesar la consulta. Tres tareas que trabajan simultáneamente pueden reducir en gran medida el tiempo total transcurrido de consultas que requieren una gran cantidad de datos y de procesador.
Consultas con más probabilidad de aprovechar las operaciones en paralelo
- Db2 emplea la mayor parte del tiempo captando páginas, una consulta que requiere una gran actividad de E/S
Una consulta típica con gran actividad de E/S es la siguiente consulta, suponiendo que se utiliza una exploración de espacio de tablas sobre varias páginas:
SELECT COUNT(*) FROM ACCOUNTS WHERE BALANCE > 0 AND DAYS_OVERDUE > 30; - Db2 invierte tiempo de procesador y de E/S para procesar las filas de determinados tipos de consultas. Estas consultas incluyen:
- Consultas con exploraciones de datos intensivas y una alta selectividad
- Consultas en las que intervienen grandes volúmenes de datos que se tienen que explorar, pero relativamente pocas filas que cumplen los criterios de búsqueda.
- Consultas que contienen funciones de totales
- En las funciones de columna (como MIN, MAX, SUM, AVG y COUNT) típicamente intervienen grandes cantidades de datos que se tienen que explorar, pero solo devuelven un resultado de totales.
- Consultas que acceden a filas de datos largas
- Estas consultas acceden a tablas con filas de datos largas y la proporción de filas por página es baja (por ejemplo, una fila por página).
- Consultas que necesitan gran cantidad de tiempo de procesador central
Esas consultas pueden ser consultas de solo lectura que sean complejas, con una gran cantidad de datos o que implican una clasificación. Por ejemplo, una consulta típica con gran actividad de procesador sería similar a ésta:
SELECT MAX(QTY_ON_HAND) AS MAX_ON_HAND, AVG(PRICE) AS AVG_PRICE, AVG(DISCOUNTED_PRICE) AS DISC_PRICE, SUM(TAX) AS SUM_TAX, SUM(QTY_SOLD) AS SUM_QTY_SOLD, SUM(QTY_ON_HAND - QTY_BROKEN) AS QTY_GOOD, AVG(DISCOUNT) AS AVG_DISCOUNT, ORDERSTATUS, COUNT(*) AS COUNT_ORDERS FROM ORDER_TABLE WHERE SHIPPER = 'OVERNIGHT' AND SHIP_DATE < DATE('2006-01-01') GROUP BY ORDERSTATUS ORDER BY ORDERSTATUS;
Terminología
Cuando el término tarea se utiliza con información sobre el proceso en paralelo, tenga en cuenta el contexto.Para el procesamiento paralelo de consultas CP, una tarea es una unidad de ejecución real z/OS® utilizada para procesar una consulta.
Un grupo paralelo es el término que se utiliza para nombrar un determinado conjunto de operaciones paralelas. Una consulta puede tener más de un grupo paralelo, pero cada grupo paralelo de la consulta se identifica mediante su propio número de ID exclusivo.
El grado de paralelismo es el número de tareas paralelas que Db2 determina que se pueden utilizar para las operaciones en el grupo paralelo. El número máximo de operaciones en paralelo que Db2 puede generar es 254. Sin embargo, para la mayoría de consultas y entornos de e Db2 , Db2 elige un número más bajo.
Es posible que tenga que limitar más el número máximo porque más operaciones en paralelo consumen procesador, almacenamiento real y recursos de E/S. Si el consumo de recursos es alto en el entorno de paralelismo, utilice el valor sel parámetro de subsistema DSNTIP8 para limitar el número máximo de operaciones paralelas.
En un grupo paralelo, una tarea de origen es el TCB (SRB para solicitudes distribuidas) que coordina el trabajo de todas las tareas en paralelo. Las tareas en paralelo son unidades ejecutables compuestas de SRB especiales, que se denominan SRB que se pueden adelantar.
Con las SRB preferentes, el z/OS despachador puede interrumpir una tarea en cualquier momento para ejecutar otro trabajo con la misma o mayor prioridad de despacho. En el caso de trabajo en paralelo no distribuido, las tareas en paralelo se ejecutan bajo un tipo de SRB que se puede adelantar denominado un SRB cliente, que permite que la tarea en paralelo herede la importancia del espacio de direcciones de origen. Para solicitudes distribuidas, las tareas en paralelo se ejecutan bajo un SRB que se puede adelantar denominado un SRB de enclave.