Establecer la opción de configuración del servidor Grado máximo de paralelismo

Se aplica a: síSQL Server (todas las versiones admitidas)

En este tema se describe cómo establecer la opción de configuración del servidor grado máximo de paralelismo (MAXDOP) en SQL Server mediante SQL Server Management 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 (grado máximo de paralelismo) para limitar el número de procesadores que debe utilizarse en la ejecución de planes en paralelo. Para obtener más información sobre el límite establecido por el grado de paralelismo máximo (MAXDOP) , 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.

Nota

SQL Server 2019 (15.x) presenta recomendaciones automáticas para establecer la opción de configuración de servidor MAXDOP durante el proceso de instalación basadas en el número de procesadores disponibles. 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.
Sin embargo, en Azure SQL, el valor predeterminado de MAXDOP para cada nueva base de datos única, base de datos de grupo elástico e instancia administrada es de 8. 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.

Antes de comenzar

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 affinity mask no es el predeterminado, es posible que se limite el número de procesadores disponibles para SQL Server en sistemas de multiproceso simétrico (SMP).

  • Si se establece el grado máximo de paralelismo (MAXDOP) en 0, SQL Server puede usar todos los procesadores disponibles hasta un máximo de 64. 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 de planes paralelos, establezca la opción 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, el valor de grado máximo de paralelismo se pasará por alto.

  • 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 una ejecución de consulta en paralelo, una solicitud única puede generar varias tareas hasta alcanzar el límite MAXDOP, y que cada tarea usará un trabajo y un programador. Para obtener más información, vea la sección Programar tareas en paralelo de la Guía de arquitectura de subprocesos y tareas.

  • 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 operaciones de consultas e índices, esta opción también controla el paralelismo de DBCC CHECKTABLE, DBCC CHECKDB y 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 Marcas de seguimiento (Transact-SQL).

Recomendaciones

A partir de SQL Server 2016 (13.x), durante el inicio del servicio, si Motor de base de datos detecta más de ocho núcleos físicos por nodo NUMA o socket en el inicio, se crean nodos soft-NUMA de forma automática y 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 pensadas para mantener todos los subprocesos de trabajo de una consulta en paralelo en el mismo nodo soft-NUMA. Esto mejorará el rendimiento de las consultas y la distribución de los subprocesos de trabajo entre los nodos NUMA para la carga de trabajo. Para obtener más información, vea Soft-NUMA.

A partir de SQL Server 2016 (13.x), use las siguientes directrices al configurar el valor de configuración del servidor de grado máximo de paralelismo:

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 ese número de procesadores lógicos o por debajo de este
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 ese número de procesadores lógicos por nodo NUMA o por debajo de este
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

Nota

El nodo NUMA de la tabla anterior hace referencia a los nodos NUMA de software creados automáticamente mediante SQL Server 2016 (13.x) y versiones posteriores, o a los nodos NUMA basados en hardware en caso de que el nodo NUMA de software esté deshabilitado.
Utilice 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, vea CREATE WORKLOAD GROUP (Transact-SQL).

De SQL Server 2008 a SQL Server 2014 (12.x), use las siguientes directrices al configurar el valor de configuración del servidor de grado máximo de paralelismo:

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 ese número de procesadores lógicos o por debajo de este
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 ese número de procesadores lógicos por nodo NUMA o por debajo de este
Servidor con varios nodos NUMA Más de 8 procesadores lógicos por nodo NUMA Mantener MAXDOP en 8

Seguridad

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

Para configurar la opción de grado máximo de paralelismo

  1. En el Explorador de objetos, haga clic con el botón derecho en un servidor y seleccione Propiedades.

  2. Haga clic en 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.

Usar Transact-SQL

Para configurar la opción de grado máximo de paralelismo

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

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

USE AdventureWorks2012 ;  
GO   
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
EXEC sp_configure 'max degree of parallelism', 16;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  

Para obtener más información, vea Opciones de configuración de servidor (SQL Server).

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

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

Consulte también

ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
affinity mask (opción de configuración del servidor)
Opciones de configuración de servidor (SQL Server)
sp_configure (Transact-SQL)
Query Processing Architecture Guide (Guía de arquitectura de procesamiento de consultas)
Guía de arquitectura de subprocesos y tareas
Configurar operaciones de índice en paralelo
Sugerencias de consulta (Transact-SQL)
Establecer opciones de índice

Pasos siguientes

RECONFIGURE (Transact-SQL) Supervisión y optimización del rendimiento