Establecer la opción de configuración del servidor Grado máximo de paralelismo
Se aplica a:
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:
- En el nivel de consulta, mediante la sugerencia de consulta MAXDOP.
- En el nivel de base de datos, con la configuración con ámbito de base de datos MAXDOP.
- En el nivel de carga de trabajo, con la opción de configuración del grupo de cargas de trabajo de Resource Governor MAX_DOP.
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
En el Explorador de objetos, haga clic con el botón derecho en un servidor y seleccione Propiedades.
Haga clic en el nodo Avanzado .
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
Conéctese con el Motor de base de datos.
En la barra Estándar, haga clic en Nueva consulta.
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 parallelismen16.
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