Configuración del servidor: umbral de costo para paralelismo
Se aplica a: SQL Server
En este artículo se describe cómo configurar la opción de configuración del cost threshold for parallelism
servidor en SQL Server mediante SQL Server Management Studio o Transact-SQL. La cost threshold for parallelism
opción especifica el umbral en el que SQL Server crea y ejecuta planes paralelos para las consultas. SQL Server crea y ejecuta un plan paralelo para una consulta solo cuando el costo estimado para ejecutar un plan serie para la misma consulta es mayor que el valor establecido en cost threshold for parallelism
. El costo se refiere a un costo estimado necesario para ejecutar el plan de serie en una configuración de hardware específica, y no es una unidad de tiempo. La cost threshold for parallelism
opción se puede establecer en cualquier valor comprendido entre 0 y 32767.
Limitaciones
Este costo hace referencia a una unidad de costo abstracta y no a una unidad de tiempo estimado. Solo se establece cost threshold for parallelism
en multiprocesadores simétricos.
SQL Server omite el cost threshold for parallelism
valor en las condiciones siguientes:
El equipo tiene solo un procesador lógico.
Solo hay disponible un único procesador lógico para SQL Server debido a la
affinity mask
opción de configuración.La
max degree of parallelism
opción se establece en1
.
Un procesador lógico es la unidad básica de hardware de procesador que permite al sistema operativo enviar una tarea o ejecutar un contexto de subproceso. Cada procesador lógico puede ejecutar solo un contexto de subproceso a la vez. El núcleo del procesador es el circuito que descodifica y ejecuta instrucciones. Un núcleo de procesador puede contener uno o varios procesadores lógicos. La siguiente consulta Transact-SQL se puede utilizar para obtener información de CPU para el sistema.
SELECT (cpu_count / hyperthread_ratio) AS PhysicalCPUs,
cpu_count AS logicalCPUs
FROM sys.dm_os_sys_info;
Recomendaciones
Esta opción es avanzada y solo debe cambiarla un administrador de base de datos con experiencia o un profesional certificado de SQL Server.
En algunos casos, se puede elegir un plan paralelo aunque el plan de costos de la consulta sea menor que el valor actual cost threshold for parallelism
. Esto se debe a que la decisión de usar un plan serie o un plan paralelo se basa en un costo estimado proporcionado anteriormente durante el proceso de optimización. Para más información, vea la Guía de arquitectura de procesamiento de consulta.
Aunque el valor predeterminado de es adecuado para la mayoría de 5
los sistemas, podría ser adecuado un valor diferente. Si es necesario, realice pruebas en la aplicación con valores superiores e inferiores para optimizar el rendimiento de la aplicación.
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.
Usar SQL Server Management Studio
En el Explorador de objetos, haga clic con el botón derecho en un servidor y seleccione Propiedades.
Seleccione el nodo Avanzado.
En Paralelismo, cambie la
cost threshold for parallelism
opción al valor que desee. Escriba o seleccione un valor entre 0 y 32767.
Uso de Transact-SQL
En este ejemplo se muestra cómo usar sp_configure para establecer el valor de la opción de cost threshold for parallelism
en 10
.
USE master;
GO
EXECUTE sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXECUTE sp_configure 'cost threshold for parallelism', 10;
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 umbral de costo para paralelismo
La configuración surte efecto inmediatamente, sin necesidad de reiniciar el servidor.