Configurar operaciones de índice en paraleloConfigure Parallel Index Operations

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

En este tema se define el grado máximo de paralelismo y se explica cómo modificar este valor en SQL ServerSQL Server mediante SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic defines max degree of parallelism and explains how to modify this setting in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

En los sistemas multiprocesador que ejecutan SQL ServerSQL Server Enterprise o superior, las instrucciones de índice pueden usar varios procesadores (CPU) para realizar las operaciones de examen, ordenación e indización asociadas a la instrucción de índice, al igual que hacen otras consultas.On multiprocessor systems that are running SQL ServerSQL Server Enterprise or higher, index statements may use multiple processors (CPUs) to perform the scan, sort, and index operations associated with the index statement just like other queries do. El número de CPU que se usan para ejecutar una sola instrucción de índice viene determinado por la opción de configuración del servidor Grado máximo de paralelismo, la carga de trabajo actual y las estadísticas de índices.The number of CPUs used to run a single index statement is determined by the max degree of parallelism server configuration option, the current workload, and the index statistics. 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.The max degree of parallelism option determines the maximum number of processors to use in parallel plan execution. Si Motor de base de datos de SQL ServerSQL Server Database Engine 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.If the Motor de base de datos de SQL ServerSQL Server Database Engine detects that the system is busy, the degree of parallelism of the index operation is automatically reduced before statement execution starts. Motor de base de datosDatabase Engine 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.The Motor de base de datosDatabase Engine can also reduce the degree of parallelism if the leading key column of a non-partitioned index has a limited number of distinct values or the frequency of each distinct value varies significantly. Para obtener más información, consulte Guía de arquitectura de procesamiento de consulta.For more information, see Query Processing Architecture Guide.

Nota

Las operaciones de índices en paralelo no están disponibles en todas las ediciones de SQL ServerSQL Server .Parallel index operations are not available in every SQL ServerSQL Server edition. Para obtener más información, vea Características compatibles con las ediciones de SQL Server 2016.For more information, see Features Supported by the Editions of SQL Server 2016.

En este temaIn This Topic

Antes de comenzarBefore You Begin

Limitaciones y restriccionesLimitations and Restrictions

  • El número de procesadores que utiliza el optimizador de consultas suele proporcionar un rendimiento óptimo.The number of processors that are used by the query optimizer typically provides optimal performance. 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.However, operations such as creating, rebuilding, or dropping very large indexes are resource intensive and can cause insufficient resources for other applications and database operations for the duration of the index operation. Cuando se produce este problema, se puede configurar manualmente el número máximo de procesadores que se emplean para ejecutar la instrucción de índice limitando el número de procesadores que se usarán para la operación de índice.When this problem occurs, you can manually configure the maximum number of processors that are used to run the index statement by limiting the number of processors to use for the index operation.

  • La opción de índice MAXDOP reemplaza la opción de configuración max degree of parallelism solo para la consulta que especifica esta opción.The MAXDOP index option overrides the max degree of parallelism configuration option only for the query specifying this option. 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.The following table lists the valid integer values that can be specified with the max degree of parallelism configuration option and the MAXDOP index option.

    ValorValue DescripciónDescription
    00 Especifica que el servidor determina el número de CPU que se usan, según la carga de trabajo del sistema actual.Specifies that the server determines the number of CPUs that are used, depending on the current system workload. Éste es el valor predeterminado y recomendado.This is the default value and recommended setting.
    11 Suprime la generación de planes paralelos.Suppresses parallel plan generation. La operación se ejecutará en serie.The operation will be executed serially.
    2-642-64 Limita el número de procesadores al valor especificado.Limits the number of processors to the specified value. Puede que se utilicen menos procesadores, dependiendo de la carga de trabajo actual.Fewer processors may be used depending on the current workload. Si especifica un valor superior al número de CPU disponibles, se utilizará el número real de CPU disponibles.If a value larger than the number of available CPUs is specified, the actual number of available CPUs is used.
  • La ejecución de índices en paralelo y la opción de índice MAXDOP se aplican a las instrucciones Transact-SQLTransact-SQL siguientes:Parallel index execution and the MAXDOP index option apply to the following Transact-SQLTransact-SQL statements:

  • La opción de índice MAXDOP no se puede especificar en la instrucción ALTER INDEX (...) REORGANIZE.The MAXDOP index option cannot be specified in the ALTER INDEX (...) REORGANIZE statement.

  • 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.Memory requirements for partitioned index operations that require sorting can be greater if the Query Optimizer applies degrees of parallelism to the build operation. Cuanto mayores sean los grados de paralelismo, mayor será el requisito de memoria.The higher the degrees of parallelism, the greater the memory requirement is. Para obtener más información, vea Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes.

Permisos Permissions

Debe tener un permiso de ALTER sobre la tabla o vista.Requires ALTER permission on the table or view.

Uso de SQL Server Management StudioUsing SQL Server Management Studio

Para establecer el grado máximo de paralelismo en un índiceTo set max degree of parallelism on an index

  1. En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla en la que desea establecer el grado máximo de paralelismo para un índice.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to set max degree of parallelism for an index.

  2. Expanda la carpeta Tablas .Expand the Tables folder.

  3. Haga clic en el signo más para expandir la tabla en la que desea establecer el grado máximo de paralelismo para un índice.Click the plus sign to expand the table on which you want to set max degree of parallelism for an index.

  4. Expanda la carpeta Índices .Expand the Indexes folder.

  5. Haga clic con el botón derecho en el índice para el que quiere establecer el grado máximo de paralelismo y seleccione Propiedades.Right-click the index for which you want to set the max degree of parallelism and select Properties.

  6. Debajo de Seleccionar una página, seleccione Opciones.Under Select a page, select Options.

  7. Seleccione Grado máximo de paralelismoy, a continuación, escriba un valor entre 1 y 64.Select Maximum degree of parallelism, and then enter some value between 1 and 64.

  8. Haga clic en Aceptar.Click OK.

Usar Transact-SQLUsing Transact-SQL

Para establecer el grado máximo de paralelismo en un índice existenteTo set max degree of parallelism on an existing index

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datosDatabase Engine.In Object Explorer, connect to an instance of Motor de base de datosDatabase Engine.

  2. En la barra de Estándar, haga clic en Nueva consulta.On the Standard bar, click New Query.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    GO  
    /*Alters the IX_ProductVendor_VendorID index on the Purchasing.ProductVendor table so that, if the server has eight or more processors, the Database Engine will limit the execution of the index operation to eight or fewer processors.  
    */  
    ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor  
    REBUILD WITH (MAXDOP=8);   
    GO  
    

Para obtener más información, vea ALTER INDEX (Transact-SQL).For more information, see ALTER INDEX (Transact-SQL).

Establecer el grado máximo de paralelismo en un nuevo índiceSet max degree of parallelism on a new index

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datosDatabase Engine.In Object Explorer, connect to an instance of Motor de base de datosDatabase Engine.

  2. En la barra de Estándar, haga clic en Nueva consulta.On the Standard bar, click New Query.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    GO  
    CREATE INDEX IX_ProductVendor_NewVendorID   
    ON Purchasing.ProductVendor (BusinessEntityID)  
    WITH (MAXDOP=8);  
    GO  
    

Vea tambiénSee also

Query Processing Architecture Guide (Guía de arquitectura de procesamiento de consultas)Query Processing Architecture Guide
CREATE INDEX (Transact-SQL) CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL) ALTER INDEX (Transact-SQL)
DROP INDEX (Transact-SQL) DROP INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
ALTER TABLE table_constraint (Transact-SQL) ALTER TABLE table_constraint (Transact-SQL)
ALTER TABLE index_option (Transact-SQL)ALTER TABLE index_option (Transact-SQL)