Quando alterar os encadeamentos de trabalho máximos do SQL 2005 no servidor de 64 bits

1

Ambiente do servidor:

  • Windows 2003 Standard R2 x64 SP2
  • SQL 2005 Enterprise 64-bit SP2
  • Processadores HP ProLiant BL460c G1, Xeon E5440 de 2,83 GHz (Quatro núcleos)
  • 8 GB de RAM

EDIT: Devo notar também que max_workers_count está atualmente no padrão 512 para uma caixa de 4 processadores

Estamos enfrentando impasses do conjunto de encadeamentos que tenho quase certeza de que estão relacionados ao paralelismo. Os gráficos de deadlock são quase idênticos aos do post de Bart Duncan sobre Intra-Query Parallel Thread Deadlocks , e não vejo qualquer menção a recursos de bloqueio na saída de deadlock, como mencionado no aviso seção de seu post que é o que me leva a acreditar que isso é uma coisa paralelismo.

Estou no processo de ajustar as consultas que parecem estar relacionadas a elas, mas isso vai demorar um pouco (leia "algumas semanas"). Enquanto isso, estou imaginando se a elevação do conjunto de linhas seria sensata ou não como uma solução temporária.

Algum SQL Jocks quer ajudar um cara?

(BTW - ir para o SP3 não é uma opção agora por causa de este problema )

    
por squillman 29.06.2009 / 23:39

2 respostas

4

Aumentar o número de trabalhadores não afetará seu cenário de deadlock se estiver relacionado ao paralelismo como no post no blog de Bart Duncan. Se for realmente um impasse paralelo, sua correção rápida é para OPTION (MAXDOP n) a consulta incorreta enquanto você está trabalhando para ajustá-la e restringi-la de volta ao ponto em que o deadlock cessa. Você pode não precisar voltar ao DOP 1 necessariamente, já vi o DOP 4 corrigi-lo antes.

Outra coisa a se olhar é se o hyperthreading estiver habilitado no servidor, desabilitando-o. O SQLOS cria um agendador de usuários para cada CPU lógica disponível para o SQL Server. Com o hyperthreading, você obtém 8 CPUs lógicas, o que significa que você tem 8 agendadores de usuários. Sua consulta pode estar sendo executada no DOP 8 quando você realmente tem 4 CPUs, o que pode estar causando o seu problema. Você pode dizer se isso faz parte do problema contando o número de nós de processo no gráfico XML de deadlock. Se você tem 8 nós de processo, então você deve tentar desabilitar o hyperthreading no servidor e ver se isso resolve o problema.

    
por 30.06.2009 / 02:04
2

Consulte esta entrada no Books Online para saber como alterá-la: Opções de threads de trabalho máx. e também veja essa discussão sobre como aumentar os threads de trabalho máximo do blog antigo de Ken Henderson . Eu ficaria muito cauteloso em fazê-lo, a menos que seja absolutamente necessário.

Espero que isso ajude!

    
por 29.06.2009 / 23:57