Criando partições para aprimorar o desempenho de consultas

O particionamento de uma tabela ou índice pode aprimorar o desempenho de consultas com base no tipo de consultas executadas freqüentemente em sua configuração de hardware.

Particionamento para consultas de junção

Se você executar consultas que envolvem uma junção de igualdade (equi-join) entre duas ou mais tabelas particionadas, as colunas de particionamento deverão ser as mesmas que as colunas nas quais as tabelas são unidas. Além disso, as tabelas ou seus índices devem ser co-situados. Isso significa que eles usam a mesma função de partição nomeada ou usam funções diferentes que são essencialmente as mesmas, porque:

  • Elas têm o mesmo número de parâmetros usados para particionamento e os parâmetros correspondentes são os mesmos tipos de dados.

  • Elas definem o mesmo número de partições.

  • Elas definem os mesmos valores de limite para partições.

Desse modo, o otimizador de consulta do SQL Server pode processar a junção mais rapidamente, porque as próprias partições podem ser unidas. Se uma consulta unir duas tabelas que não estão co-situadas ou não estão particionadas no campo de junção, a presença de partições pode realmente retardar o processamento da consulta em vez de acelerá-lo.

Usufruindo de várias unidades de disco

Pode ser tentador mapear as partições para grupos de arquivos, cada uma acessando um disco rígido diferente, para aprimorar o desempenho de E/S. Quando o SQL Server executa classificação de dados para operações de E/S, ele classifica os dados primeiro pela partição. Nesse cenário, o SQL Server acessa uma unidade de cada vez e isso pode reduzir o desempenho. Uma solução melhor em termos de desempenho é extrair os arquivos de dados de suas partições em mais de um disco configurando uma RAID. Dessa maneira, embora o SQL Server ainda classifique os dados por partição, ele pode acessar todas as unidades de cada partição ao mesmo tempo. Essa configuração pode ser criada independentemente de todas as partições estarem em um grupo de arquivos ou em vários grupos de arquivos. Para obter mais informações sobre como o SQL Server trabalha com níveis de RAID diferentes, consulte Níveis de RAID e SQL Server.

Controlando o comportamento de escalonamento de bloqueios

O particionamento de tabelas pode melhorar o desempenho permitindo o escalonamento de bloqueios para uma única partição em vez de uma tabela inteira. Para reduzir a contenção de bloqueio permitindo o escalonamento de bloqueios para a partição, use a opção LOCK_ESCALATION da instrução ALTER TABLE.

Consulte também

Conceitos