Configurar operaciones de índice en paralelo

En los equipos con varios procesadores que ejecutan SQL Server Enterprise, las instrucciones de índice pueden utilizar varios procesadores para realizar las operaciones de examen, ordenación e indización asociadas a la instrucción de índice, al igual que hacen otras consultas. El número de procesadores utilizados para ejecutar una sola instrucción de índice viene determinado por la opción de configuración max degree of parallelism (grado máximo de paralelismo), la carga de trabajo actual y las estadísticas de índices. La opción max degree of parallelism determina el número máximo de procesadores que se utilizarán en la ejecución de planes paralelos. Si SQL Server Database Engine (Motor de base de datos de SQL Server) detecta que el sistema está ocupado, el grado de paralelismo de la operación de índice se reduce automáticamente antes de comenzar la ejecución de la instrucción. Database Engine (Motor de base de datos) también puede reducir el grado de paralelismo si la columna de clave inicial de un índice sin particiones tiene un número limitado de valores distintos o la frecuencia de cada valor distinto varía significativamente.

[!NOTA]

Las operaciones de índices en paralelo únicamente están disponibles en las ediciones Enterprise, Developer y Evaluation de SQL Server.

El número de procesadores que utiliza el optimizador de consultas suele proporcionar un rendimiento óptimo. No obstante, las operaciones como la creación, reconstrucción o eliminación de índices de gran tamaño utilizan una gran cantidad de recursos y pueden provocar la falta de recursos para otras aplicaciones y operaciones de base de datos durante la operación de índice. Cuando se da este problema, se puede configurar manualmente el número máximo de procesadores que se utilizan para ejecutar la instrucción de índice especificando la opción de índice MAXDOP y limitando el número de procesadores que se utilizarán para la operación de índice.

La opción de índice MAXDOP reemplaza la opción de configuración max degree of parallelism sólo para la consulta que especifica esta opción. En la tabla siguiente se muestran los valores enteros válidos que se pueden especificar con la opción de configuración max degree of parallelism y la opción de índice MAXDOP.

Valor

Descripción

0

Utiliza el número real de CPU disponibles en función de la carga de trabajo actual del sistema. Éste es el valor predeterminado y recomendado.

1

Suprime la generación de planes paralelos. La operación se ejecutará en serie.

2-64

Limita el número de procesadores al valor especificado. Puede que se utilicen menos procesadores, dependiendo de la carga de trabajo actual. Si especifica un valor superior al número de CPU disponibles, se utilizará el número real de CPU disponibles.

La ejecución de índices en paralelo y la opción de índice MAXDOP se aplican a las instrucciones Transact-SQL siguientes:

  • CREATE INDEX

  • ALTER INDEX REBUILD

  • DROP INDEX (esta opción sólo se aplica a los clúster)

  • ALTER TABLE ADD (índice) CONSTRAINT

  • ALTER TABLE DROP (índice clúster) CONSTRAINT

Se pueden aplicar todas las reglas semánticas utilizadas con la opción de configuración max degree of parallelism cuando se utiliza la opción de índice MAXDOP. Para obtener más información, vea max degree of parallelism (opción).

Cuando ejecute ALTER INDEX REORGANIZE con o sin LOB_COMPACTION, el valor de max degree of parallelism será una operación de un solo subproceso. La opción de índice MAXDOP no se puede especificar en la instrucción ALTER INDEX REORGANIZE.

Operaciones de índice en línea

Las operaciones de índice en línea permiten la actividad de usuarios simultáneos durante la operación de índice. Puede utilizar la opción MAXDOP para controlar el número máximo de procesadores dedicados a la operación de índice en línea. De este modo, puede equilibrar los recursos utilizados por la operación de índice con los de los usuarios simultáneos. Para obtener más información, vea Realizar operaciones de índices en línea.

Operaciones de índice de partición

Los requisitos de memoria de las operaciones de índices con particiones que requieren ordenación pueden ser mayores si el optimizador de consultas aplica grados de paralelismo a la operación de generación. Cuanto mayores sean los grados de paralelismo, mayor será el requisito de memoria. Para obtener más información, vea Directrices especiales para índices con particiones.

Ejemplos

En el ejemplo siguiente se crea el índice IX_ProductVendor_VendorID en la tabla ProductVendor y se establece la opción max degree of parallelism en 8. Si suponemos que el servidor tiene ocho o más procesadores, el Database Engine (Motor de base de datos) limitará la ejecución de la operación de índice a ocho o menos procesadores.

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
            WHERE name = N'IX_ProductVendor_VendorID')
    DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
GO
CREATE INDEX IX_ProductVendor_VendorID 
ON Purchasing.ProductVendor (VendorID)
WITH (MAXDOP=8);
GO