Configurando operações de índice paralelo

Em computadores multiprocessadores em execução no SQL Server Enterprise, as instruções de índice podem usar vários processadores para executar operações de verificação, classificação e índice associadas à instrução de índice da mesma forma que outras consultas. O número de processadores usados para executar uma instrução simples de índice é determinado pela opção de configuração grau máximo de paralelismo, pela carga de trabalho atual e pelas estatísticas de índice. A opção grau máximo de paralelismo determina o número máximo de processadores a serem usados na execução no plano paralelo. Se o Mecanismo de Banco de Dados do SQL Server detectar que o sistema está ocupado, o grau de paralelismo da operação de índice será automaticamente reduzido antes do início da execução da instrução. O Mecanismo de Banco de Dados também poderá diminuir o grau de paralelismo se a coluna de chave à esquerda de um índice não particionado tiver um número limitado de valores distintos ou a freqüência de cada valor distinto variar de forma significativa.

ObservaçãoObservação

As operações de índice paralelas estão disponíveis somente nas edições Enterprise, Developer e Evaluation do SQL Server.

O número de processadores usados pelo otimizador de consulta normalmente fornece melhor desempenho. Porém, operações como criar, recriar ou cancelar índices muito grandes são recursos intensivos e podem causar recursos insuficientes em outros aplicativos e operações de banco de dados durante a operação de índice. Quando ocorrer esse problema, você pode configurar manualmente o número máximo de processadores usados para executar a instrução de índice, especificando a opção de índice MAXDOP e limitando o número de processadores para a operação de índice.

A opção de índice MAXDOP substitui a opção de configuração max degree of parallelism apenas para consultas que especificam essa opção. A tabela a seguir lista os valores inteiros válidos que podem ser especificados com a opção de configuração max degree of parallelism e a opção de índice MAXDOP.

Valor

Descrição

0

Usa o número real de CPUs disponíveis dependendo da carga de trabalho do sistema atual. Esse é o valor padrão e a configuração recomendada.

1

Suprime geração de plano paralelo. A operação será executada em série.

2-64

Limita o número de processadores ao valor especificado. Menos processadores podem ser usados dependendo da carga de trabalho atual. Se um valor maior que o número de CPUs disponíveis for especificado, o número atual de CPUs disponíveis será usado.

Execução de índice paralelo e a opção de índice MAXDOP se aplicam às seguintes instruções Transact-SQL:

  • CREATE INDEX

  • ALTER INDEX REBUILD

  • DROP INDEX (Isso só se aplica aos índices cluster.)

  • ALTER TABLE ADD (índice) CONSTRAINT

  • ALTER TABLE DROP (índice cluster) CONSTRAINT

Todas as regras semânticas usadas com a opção de configuração max degree of parallelism são aplicáveis quando a opção de índice MAXDOP é usada. Para obter mais informações, consulte Opção max degree of parallelism.

Quando você executar ALTER INDEX REORGANIZE com ou sem LOB_COMPACTION, o valor max degree of parallelism será uma operação de thread único. A opção de índice MAXDOP não pode ser especificada na instrução ALTER INDEX REORGANIZE.

Operações de índice online

Operações de índice online permitem atividade de usuário simultâneo durante a operação de índice. Você pode usar a opção MAXDOP para controlar o número máximo de processadores dedicados a uma operação de índice online. Desse modo, é possível equilibrar os recursos usados por uma operação de índice com aqueles dos usuários simultâneos. Para obter mais informações, consulte Executando operações de índice online.

Operações de índice de partição

Requisitos de memória para operações de índice de partição que necessitam de classificação poderão ser maiores se o otimizador de consulta aplicar graus de paralelismo à operação de criação. Quanto maior os graus de paralelismo, o maior será o requisito de memória. Para obter mais informações, consulte Diretrizes especiais para índices particionados.

Exemplos

O seguinte exemplo cria o índice IX_ProductVendor_VendorID na tabela ProductVendor e define a opção max degree of parallelism como 8. Considerando que o servidor tenha oito ou mais processadores, o Mecanismo de Banco de Dados limitará a execução da operação de índice a oito ou menos processadores.

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