Configuración del servidor: umbral de costo para paralelismo

Se aplica a:SQL ServerAzure SQL Managed Instance

En este artículo se describe cómo configurar la opción de configuración de servidor cost threshold for parallelism en SQL Server mediante SQL Server Management Studio o Transact-SQL.

Acerca del umbral de costo para paralelismo

La cost threshold for parallelism opción especifica el umbral en el que SQL Server considera planes paralelos en equipos con más de un procesador lógico. La cost threshold for parallelism opción se puede establecer en cualquier valor de 0 a 32 767.

El costo es la suma de los costos de operador estimados en un plan de consulta (por ejemplo, CPU e E/S). Es una medida relativa que solo se usa para la selección del plan; no mide el tiempo de ejecución real.

Algunos componentes de Transact-SQL pueden impedir un plan paralelo. Por ejemplo, funciones escalares definidas por el usuario (UDF) que no se pueden insertar en línea, modificaciones de variables de tabla y determinadas llamadas al sistema. SQL Server evalúa alternativas paralelas solo cuando el mejor costo estimado del plan serie supera el cost threshold for parallelism valor y, a continuación, puede elegir un plan paralelo más barato.

Limitaciones

SQL Server omite el valor de cost threshold for parallelism en las siguientes condiciones:

  • El equipo tiene solo un procesador lógico.

  • Solo hay un único procesador lógico disponible para SQL Server debido a la opción de configuración affinity mask.

  • La max degree of parallelism opción de configuración del servidor se establece en 1.

Recomendaciones

Esta opción es una opción avanzada y solo debe cambiarla un profesional de base de datos experimentado.

El valor predeterminado de 5 es un punto de partida, no una recomendación. En los sistemas modernos de SQL Server, aumentarlo puede ayudar a que las consultas OLTP más pequeñas sigan ejecutándose con planes seriales. Use incrementos pequeños y observe un ciclo de negocio completo antes de realizar más cambios. Si es necesario, realice pruebas en la aplicación con valores superiores e inferiores para optimizar el rendimiento de la aplicación.

Nota:

En Azure SQL Database, no se puede establecer cost threshold for parallelism. Use MAXDOP para controlar el paralelismo en su lugar. Para más información, consulte Cambio de MAXDOP predeterminado en Azure SQL Database e Instancia administrada de Azure SQL.

En determinados casos, se puede elegir un plan paralelo aunque el costo del plan de la consulta sea menor que el valor actual cost threshold for parallelism . La decisión de usar un plan paralelo o serie se basa en una estimación de costos proporcionada anteriormente en el proceso de optimización. Para más información, vea la Guía de arquitectura de procesamiento de consulta.

Observaciones

Para ver si la opción de configuración del cost threshold for parallelism servidor está establecida demasiado alta o demasiado baja para la carga de trabajo, busque los siguientes indicadores.

Umbral de costo para la configuración del paralelismo Description
Demasiado bajo - Demasiadas consultas ligeras de CPU van en paralelo.

- En Almacén de consultas, muchos planes tienen is_parallel_plan establecido en 1.

- CXPACKET y CXCONSUMER dominan las estadísticas de tipo de espera. También puede ver THREADPOOL y SOS_SCHEDULER_YIELD esperar.
Demasiado alto - No se ejecutan en paralelo suficientes consultas de uso intensivo de CPU de la carga de trabajo y, como resultado, la utilización de la CPU es superior a la óptima.

- SOS_SCHEDULER_YIELD domina las estadísticas de tipo de espera.

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. El permiso ALTER SETTINGS lo tienen implícitamente los roles fijos de servidor sysadmin y serveradmin.

Uso de SQL Server Management Studio

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

  2. Seleccione el nodo Avanzado.

  3. En paralelismo, cambie la opción cost threshold for parallelism al valor que desee. Escriba o seleccione un valor de 0 a 32 767.

Uso de Transact-SQL

En este ejemplo se muestra cómo usar sp_configure para establecer el valor de cost threshold for parallelism en 20.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'cost threshold for parallelism', 20;
GO

RECONFIGURE;
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 de umbral de costo para paralelismo

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