Otimização do SQL Server 2008

1

Eu aprendi hoje, se você acrescentar à sua consulta

OPTION (MAXDOP 0)

sua consulta será executada em vários processadores e, se for uma consulta enorme, a consulta terá um desempenho mais rápido.

Eu conheço as diretrizes gerais sobre otimizações de consulta (usando índices, selecionando apenas os campos necessários etc.), minha pergunta é sobre a otimização do SQL Server. Talvez mudando algumas opções em configurações ou qualquer outra coisa.

Quais são as diretrizes do SQL Server Optimization?

Obrigado.

P.S. Suponho que esse não é o lugar certo para fazer perguntas relacionadas ao servidor. Devo apagá-lo ou talvez ele possa ser migrado para serverfault?

    
por hgulyan 11.06.2010 / 11:30

1 resposta

2

I've learned today, if

Sugestão: LEIA O MANUAL, pelo menos uma vez. Toda a "opção" está bem documentada, e você pode se surpreender com o quanto mais você pode aprender.

your query will run on multiple processors and if it's huge query, query will perform faster

Não, isso não é o que a MAXDOP faz. Em circunstâncias normais, não faz absolutamente nada. Entenda isso - você aprendeu besteira;)

Aqui vamos nós:

A opção MaxDOP define o grau MÁXIMO de paralelismo. Ele não diz "use mais processadores", ele diz "vá com o máximo de paralelismo X" e se X = 0 esse é o número de processadores.

Aqui está o problema, no entanto - existe uma configuração para o MaxDOP que já diz 0, então em circunstâncias normais ele não faz nada do jeito que você quer.

O que é útil é limitar o max peralellism MAIS para consultas em que não faz sentido (porque não, ele não faz uma consulta automática ser executada mais rápido - ele pode realmente tornar a execução muito mais lenta). Nesses casos, as versões específicas podem gostar que uma Opção (maxdop 1) seja mais letrada do que a configuração padrão. Você pode ler mais sobre isso no link

Dito isso, o MaxDOP é um bichinho difícil de dominar - em 99% dos casos, não faz sentido colocar um maxdop em uma consulta.

What guidelines are there for SQL Server Optimization?

Não há nenhum. Os princípios padrão do SQL se aplicam (pergunte somente o que você precisa, tenha índices apropriados etc.). O resto raramente é usado - então os princípios genéricos não se aplicam (pois são raros - diretriz genérica: não os use).

As diretrizes são, a propósito, chamadas de documentação.

Como sempre (seu post é um bom exemplo) o conhecimento limitado é quase sempre uma coisa: totalmente errado (como você nem sabia o que o MaxDop 0 realmente faz).

    
por 12.06.2010 / 10:53