Establecimiento de la opción de 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 (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) presentó recomendaciones automáticas para establecer la opción de configuración de servidor MAXDOP 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 Managed Instance, 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. En Azure SQL Database, la configuración de ámbito de base de datos MAXDOP se establece en 8. In Azure SQL Managed Instance, la opción de configuración de servidor max degree of parallelism (MAXDOP) se establece en 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 empezar

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).

  • 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 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 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).

  • 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

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 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 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. 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, vea CREATE WORKLOAD GROUP (Transact-SQL).

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 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 o Azure Data Studio

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

Configurar la opción de grado máximo de paralelismo

Estas opciones cambian MAXDOP para la instancia.

  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

Configurar la opción de grado máximo de paralelismo con T-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 AdventureWorks2022;  
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 más información, consulte 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.