Configurar operaciones de índice en paralelo

En equipos multiprocesador que ejecuten Microsoft SQL Server 2005 Enterprise Edition, puede que las instrucciones de índice utilicen más procesadores para realizar las operaciones de recorrido y ordenación asociadas a la instrucción de índice al igual que 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 y por la carga de trabajo actual. La opción max degree of parallelism limita el número de procesadores que se pueden utilizar en la ejecución de planes paralelos. Si el SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) 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.

[!NOTA] Las operaciones de índice en paralelo sólo están disponibles en SQL Server 2005 Enterprise Edition.

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 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 índices agrupados)
  • ALTER TABLE ADD (índice) CONSTRAINT
  • ALTER TABLE DROP (índice agrupado) 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 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

Vea también

Conceptos

Procesar una consulta en paralelo

Otros recursos

ALTER INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL)
DROP INDEX (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005