Procesar una consulta en paralelo

SQL Server proporciona consultas en paralelo para optimizar la ejecución de consultas y las operaciones con índices en equipos que disponen de más de un microprocesador (CPU). Debido a que SQL Server puede realizar una operación de índice o consulta en paralelo mediante varios subprocesos del sistema operativo, la operación se puede completar de forma rápida y eficaz.

Durante la optimización de una consulta, SQL Server busca operaciones de consulta o índice que podrían beneficiarse de la ejecución en paralelo. Para estas consultas, SQL Server inserta operadores de intercambio en el plan de ejecución de consultas para preparar su ejecución en paralelo. Un operador de intercambio es un operador de un plan de ejecución de consultas que proporciona administración de procesos, redistribución de datos y control del flujo. El operador de intercambio incluye los operadores lógicos Distribute Streams, Repartition Streams y Gather Streams como subtipos; uno o varios de estos operadores pueden aparecer en la salida de Showplan de un plan de consulta para una consulta en paralelo.

Tras la inserción de operadores de intercambio, el resultado es un plan de ejecución de consultas en paralelo. Un plan de ejecución de consultas en paralelo puede utilizar más de un subproceso. Un plan de ejecución en serie, utilizado por una consulta no paralela, sólo usa un subproceso para su ejecución. El número real de subprocesos que utiliza una consulta en paralelo se determina en la inicialización de la ejecución del plan de consulta y viene determinado por la complejidad del plan y el grado de paralelismo. El grado de paralelismo determina el número máximo de CPU que se están utilizando; no significa el número de subprocesos que se están utilizando. El valor del grado de paralelismo se establece en el servidor y se puede modificar mediante el procedimiento almacenado del sistema sp_configure. Puede reemplazar este valor para instrucciones individuales de consulta o índice especificando la sugerencia de consulta MAXDOP o la opción de índice MAXDOP.

El optimizador de consultas de SQL Server no utiliza un plan de ejecución en paralelo para una consulta si se cumple alguna de las siguientes condiciones:

  • El costo de la ejecución en serie de la consulta no es lo suficientemente alto como para considerar un plan de ejecución en paralelo alternativo.

  • El plan de ejecución en serie se considera más rápido que cualquier otro plan de ejecución en paralelo de una consulta determinada.

  • La consulta contiene operadores escalares o relacionales que no se pueden ejecutar en paralelo. Es posible que algunos operadores hagan que una sección del plan de consultas se ejecute en modo de serie, o que todo el plan se ejecute en modo de serie.