Configuración del servidor: grado máximo de paralelismo

Se aplica a: SQL Server

En este artículo se describe cómo establecer la opción de configuración del servidor de max degree of parallelism (MAXDOP) en SQL Server mediante SQL Server Management Studio, Azure Data Studio o Transact-SQL. Cuando una instancia de SQL Server se ejecuta en un equipo que tiene más de un microprocesador o CPU, Motor de base de datos detecta si se puede usar el paralelismo. El grado de paralelismo establece el número de procesadores que se usan para ejecutar una sola instrucción, para cada ejecución de plan paralelo. Puede utilizar la opción max degree of parallelism para limitar el número de procesadores utilizados en la ejecución de planes paralelos. Para obtener más información sobre el límite establecido por max degree of parallelism, vea la sección Consideraciones de esta página. SQL Server considera los planes de ejecución en paralelo para las consultas, las operaciones de lenguaje de definición de datos (DDL) de índice, las inserciones en paralelo, la modificación de columna en línea, la colección de estadísticas en paralelo y el rellenado de cursor estático y controlado por conjuntos de claves.

SQL Server 2019 (15.x) introdujo recomendaciones automáticas para establecer la max degree of parallelism opción de configuración del servidor en función del número de procesadores disponibles durante el proceso de instalación. La interfaz de usuario del programa de instalación permite aceptar la configuración recomendada o introducir su propio valor. Para obtener más información, vea la página Configuración del Motor de base de datos: MaxDOP.

En Azure SQL Database y Azure SQL Instancia administrada, la configuración predeterminada de MAXDOP para cada nueva base de datos única, base de datos del grupo elástico e instancia administrada es 8. En Azure SQL Database, la MAXDOP configuración con ámbito de base de datos se establece 8en . En Azure SQL Instancia administrada, la opción de configuración del max degree of parallelism servidor se establece 8en .

Para más información sobre MAXDOP en Azure SQL Database, consulte Configuración del grado máximo de paralelismo (MAXDOP) en Azure SQL Database.

Consideraciones

Esta opción es avanzada y solo debe cambiarla un administrador de base de datos con experiencia o un profesional certificado de SQL Server.

Si el valor de la opción de máscara de afinidad no es el predeterminado, podría limitarse el número de procesadores disponibles para SQL Server en sistemas de multiproceso simétrico (SMP).

Establecer max degree of parallelism en 0 permite a SQL Server usar todos los procesadores disponibles hasta 64 procesadores. Pero este no es el valor recomendado para la mayoría de los casos. Para obtener más información sobre los valores recomendados para el grado máximo de paralelismo, vea la sección Recomendaciones en esta página.

Para suprimir la generación del plan paralelo, establezca max degree of parallelism en 1. Establezca el valor en un número de 1 a 32 767 para especificar el número máximo de núcleos de procesador que puede usar durante una única ejecución de consulta. Si se especifica un valor superior al número de procesadores disponibles, se utilizará el número real de procesadores disponibles. Si el equipo tiene solo un procesador, se omite el valor de max degree of parallelism.

El límite del grado máximo de paralelismo se establece por tarea. No es un límite por solicitud ni por consulta. Esto significa que durante la ejecución de una consulta paralela, una sola solicitud puede generar varias tareas hasta el límite MAXDOP y cada tarea usa un trabajador y un programador. Para obtener más información, consulte la sección Programación de tareas paralelas en la guía de arquitectura de tareas y subprocesos.

Puede invalidar el valor de configuración del servidor de grado máximo de paralelismo:

Las operaciones de índice que crean o vuelven a generar un índice, o que eliminan un índice clúster, pueden consumir recursos de forma intensiva. Puede omitir el valor de la opción max degree of parallelism para operaciones de índice especificando la opción de índice MAXDOP en la instrucción del índice. El valor de MAXDOP se aplica a la instrucción en tiempo de ejecución y no se almacena en los metadatos del índice. Para obtener más información, vea Configurar operaciones de índice en paralelo.

Además de las consultas y las operaciones de índice, esta opción también controla el paralelismo de DBCC CHECKTABLE, DBCC CHECKDBy DBCC CHECKFILEGROUP. Puede deshabilitar los planes de ejecución en paralelo de estas instrucciones mediante el uso de la marca de seguimiento 2528. Para obtener más información, vea Marca de seguimiento 2528.

SQL Server 2022 (16.x) introdujo una nueva característica, Comentarios de grado de paralelismo (DOP), para mejorar el rendimiento de las consultas mediante la identificación de ineficiencias de paralelismo para las consultas repetidas, en función del tiempo transcurrido y las esperas. Los Comentarios de grado de paralelismo forman parte de la familia de características de procesamiento de consultas inteligentes y abordan el uso poco óptimo del paralelismo para repetir consultas. Para obtener información sobre los comentarios de DOP, visite Los comentarios sobre el grado de paralelismo (DOP).

Recomendaciones

En SQL Server 2016 (13.x) y versiones posteriores, durante el inicio del servicio si el Motor de base de datos detecta más de ocho núcleos físicos por nodo NUMA o socket en el inicio, los nodos NUMA suaves se crean automáticamente de forma predeterminada. Motor de base de datos coloca los procesadores lógicos del mismo núcleo físico en nodos soft-NUMA diferentes. Las recomendaciones de la tabla siguiente están destinadas a mantener todos los subprocesos de trabajo de una consulta paralela dentro del mismo nodo soft-NUMA. Esto mejora el rendimiento de las consultas y la distribución de subprocesos de trabajo en los nodos NUMA de la carga de trabajo. Para más información, vea Soft-NUMA (SQL Server).

En SQL Server 2016 (13.x) y versiones posteriores, use las instrucciones siguientes al configurar el valor de configuración del max degree of parallelism servidor:

Configuración del servidor Número de procesadores Guía
Servidor con un solo nodo NUMA 8 procesadores lógicos como mínimo Mantener MAXDOP en o bajo el número de procesadores lógicos
Servidor con un solo nodo NUMA Más de 8 procesadores lógicos Mantener MAXDOP en 8
Servidor con varios nodos NUMA 16 procesadores lógicos como mínimo por nodo NUMA Mantener MAXDOP en o bajo el número de procesadores lógicos por nodo NUMA
Servidor con varios nodos NUMA Más de 16 procesadores lógicos por nodo NUMA Mantener MAXDOP a la mitad del número de procesadores lógicos por nodo de NUMA con un valor máximo de 16

El nodo NUMA de la tabla anterior hace referencia a nodos NUMA suaves creados automáticamente por SQL Server 2016 (13.x) y versiones posteriores, o nodos NUMA basados en hardware si soft-NUMA está deshabilitado.

Use estas mismas instrucciones al establecer la opción de grado máximo de paralelismo de los grupos de cargas de trabajo de Resource Governor. Para obtener más información, consulte CREATE WORKLOAD GROUP.

SQL Server 2014 y versiones anteriores

De SQL Server 2008 (10.0.x) a SQL Server 2014 (12.x), use las siguientes directrices al configurar el valor de configuración del servidor de max degree of parallelism:

Configuración del servidor Número de procesadores Guía
Servidor con un solo nodo NUMA 8 procesadores lógicos como mínimo Mantener MAXDOP en o bajo el número de procesadores lógicos
Servidor con un solo nodo NUMA Más de 8 procesadores lógicos Mantener MAXDOP en 8
Servidor con varios nodos NUMA 8 procesadores lógicos como mínimo por nodo NUMA Mantener MAXDOP en o bajo el número de procesadores lógicos por nodo NUMA
Servidor con varios nodos NUMA Más de 8 procesadores lógicos por nodo NUMA Mantener MAXDOP en 8

Permisos

De forma predeterminada, todos los usuarios tienen permisos de ejecución en sp_configure sin ningún parámetro o solo con el primero. Para ejecutar sp_configure con ambos parámetros y cambiar una opción de configuración, o para ejecutar la instrucción RECONFIGURE, un usuario debe tener el permiso ALTER SETTINGS en el servidor. Los roles fijos de servidor sysadmin y serveradmin tienen el permiso ALTER SETTINGS de forma implícita.

Uso de SQL Server Management Studio o Azure Data Studio

En Azure Data Studio, instale la Database Admin Tool Extensions for Windows extensión o use el siguiente método T-SQL.

Estas opciones cambian para MAXDOP la instancia de .

  1. En el Explorador de objetos, haga clic con el botón derecho en la instancia deseada y, después, seleccione Propiedades.

  2. Seleccione el nodo Avanzado.

  3. En el cuadro Grado máximo de paralelismo , seleccione el número máximo de procesadores que se usarán en la ejecución de planes paralelos.

Uso de Transact-SQL

  1. Conéctese al Motor de base de datos con SQL Server Management Studio o Azure Data Studio.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar. En este ejemplo se muestra cómo usar sp_configure para configurar la opción max degree of parallelism en 16.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    
    EXECUTE sp_configure 'max degree of parallelism', 16;
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Para obtener más información, vea Opciones de configuración de servidor.

Seguimiento: Después de configurar la opción grado máximo de paralelismo

La configuración surte efecto inmediatamente, sin necesidad de reiniciar el servidor.