locked
Query usa apenas um core RRS feed

  • Pergunta

  • Olá.

      Estamos migrando um servidor SQL para uma máquina mais potente. Mas uma query que usamos como referência leva mais tempo para rodar.

      Aparentemente nosso servidor atual roda a query usando alguns núcleos enquanto o novo usa apenas 1.

      Ambos têm Windows Server Server 2008 R2 SP1 e SQL Server 2008 R2 Standard SP1 em inglês.

      Nossos servidores são:

      ...Atual: Dell R710 com 2 Intel X5670 (2,93 GHz, 12 MB de cache, 6 núcleos e 12 threads) e 64 GB de RAM

      ...Novo: Dell R910 com 4 Intel E7-4830 (2,13 GHz, 24 MB de cache, 8 núcleos e 16 threads) e 128 GB de RAM

      A configuração do SQL nos dois está padrão quanto a: quantidade de CPUs, afinidade de CPUs, custo e máximo nível de paralelismo, máximas threads de trabalho, etc.

      Será que o X5670 é melhor do que o E7-4830 para o SQL? Então qual seria a melhor família de CPUs para SQL Server?

    Obrigado,

    Cássio.

    quinta-feira, 3 de maio de 2012 22:17

Respostas

  • Boa tarde Cassio,

    Como chegou a conclusão que a query esta usando apenas um core?

    no final da query informe OPTION (MAXDOP max"max utilizará todos os cores do server").

    verifique também as configurações de paralelismo usando a proc de sistema "sp_configure" na opção "max degree of parallelism  > maximum".

    da uma pesquisada sobre paralelismo, o sql server a partir da versão 2008 para um melhor desempenho, ele faz o balanceamento da carga entre os nucleos das CPUs usando paralelismo. Por esse motivo vc deve verificar qual o máximo esta setado na sua instância.

    segunda-feira, 7 de maio de 2012 20:31
  • Cássio,

    Mas a questão não é verificar somente o valor definido em Maximium, o padrão para este valor é 64, mas valor que vai indicar o uso de mais de um core em seu ambiente, esta definido na coluna Run_Value, o valor padrão para esta coluna deve ser 0(zero), o que indica para o SQL Server utilizar o máximo de processadores disponíveis no seu ambiente.

    Quando o SQL Server executa em um computador com mais de um microprocessador ou CPU, ele detecta o melhor grau de paralelismo, ou seja, o número de processadores utilizados para executar uma única instrução, para cada execução de plano paralela.

    Você pode usar a opção max degree of parallelism para limitar o número de processadores a serem usados na execução de plano paralela. Para permitir que o servidor determine o grau máximo de paralelismo, defina essa opção como 0, o valor padrão.

    Defina o grau máximo de paralelismo em 1 para suprimir a geração de plano paralelo. Defina o valor como um número maior do que 1 para restringir o número máximo de processadores usado por uma única execução de consulta.

    O valor máximo para thedegree de configuração de paralelismo é controlado pela edição de SQL Server, tipo de CPU e sistema operacional. Se um valor maior do que o número de processadores disponíveis for especificado, o número real de processadores disponíveis será usado. Se o computador tiver só um processador, o valor de grau máximo de paralelismo será ignorado.

    Valor Edição do SQL Server

    1

    SQL Server Express

    2

    SQL Server Workgroup

    4

    SQL Server 2008 Web

    4

    SQL Server 2008 Standard

    32

    SQL Server 2008 Enterprise executado em sistemas operacionais x86.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 9 de maio de 2012 13:11
    Moderador

Todas as Respostas

  • Envia-nos o plan de ejecucao da query.

    Carlos Ignacio Aguero. DBA SQL Server. Toda mi respeto al pueblo Peruano por la ayuda prestada en la guerra de Malvinas.

    sexta-feira, 4 de maio de 2012 17:51
  • As estatisticas e indices estao atualizados em ambos os ambientes?

    Imagino que tenha sido feito o backup/restore..


    http://www.diaadiasql.com.br

    sexta-feira, 4 de maio de 2012 19:53
  • Cassio,

    Por gentileza você poderia nos explicar como realizou a migração?

    Os questionamentos do Renato são importantes para entender o melhor caminho e quais são os passos necessários para tentar ajudar.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 7 de maio de 2012 13:41
    Moderador
  • Boa tarde Cassio,

    Como chegou a conclusão que a query esta usando apenas um core?

    no final da query informe OPTION (MAXDOP max"max utilizará todos os cores do server").

    verifique também as configurações de paralelismo usando a proc de sistema "sp_configure" na opção "max degree of parallelism  > maximum".

    da uma pesquisada sobre paralelismo, o sql server a partir da versão 2008 para um melhor desempenho, ele faz o balanceamento da carga entre os nucleos das CPUs usando paralelismo. Por esse motivo vc deve verificar qual o máximo esta setado na sua instância.

    segunda-feira, 7 de maio de 2012 20:31
  • Cássio,

    Mas a questão não é verificar somente o valor definido em Maximium, o padrão para este valor é 64, mas valor que vai indicar o uso de mais de um core em seu ambiente, esta definido na coluna Run_Value, o valor padrão para esta coluna deve ser 0(zero), o que indica para o SQL Server utilizar o máximo de processadores disponíveis no seu ambiente.

    Quando o SQL Server executa em um computador com mais de um microprocessador ou CPU, ele detecta o melhor grau de paralelismo, ou seja, o número de processadores utilizados para executar uma única instrução, para cada execução de plano paralela.

    Você pode usar a opção max degree of parallelism para limitar o número de processadores a serem usados na execução de plano paralela. Para permitir que o servidor determine o grau máximo de paralelismo, defina essa opção como 0, o valor padrão.

    Defina o grau máximo de paralelismo em 1 para suprimir a geração de plano paralelo. Defina o valor como um número maior do que 1 para restringir o número máximo de processadores usado por uma única execução de consulta.

    O valor máximo para thedegree de configuração de paralelismo é controlado pela edição de SQL Server, tipo de CPU e sistema operacional. Se um valor maior do que o número de processadores disponíveis for especificado, o número real de processadores disponíveis será usado. Se o computador tiver só um processador, o valor de grau máximo de paralelismo será ignorado.

    Valor Edição do SQL Server

    1

    SQL Server Express

    2

    SQL Server Workgroup

    4

    SQL Server 2008 Web

    4

    SQL Server 2008 Standard

    32

    SQL Server 2008 Enterprise executado em sistemas operacionais x86.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 9 de maio de 2012 13:11
    Moderador