locked
Sql 2008 processador a 100% RRS feed

  • Pergunta

  • Tenho o seguinte select a correr numa maquina virtual com 10GB de memoria 2 processador estando disponvivel para a maquina virtual com o sql 4 nucleos de processador. Ao correr a seguinte rotina: "select docnome,adoc,data from ml where dilno not in (select dilno from ol where plano=1)" O processador atinge os 100% bloqueando todo o sistema. A mesma rotina a correr num computador com 1 processador e 4 GB de memoria, estando a base de dados e o sql configurados da mesma maneira o processador em termos de performance nem se quer se mexe. Já recriei index e fiz update estatistics, coloquei nas opções da base de dados sql2008(100) e continua na mesma.
    Fidalgo
    terça-feira, 30 de junho de 2009 14:37

Respostas

Todas as Respostas

  • Ola Fidaldo,

    Vc criou indices em quais colunas? e teste adicionando o hint WITH(NOLOCK) se possivel.

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    terça-feira, 30 de junho de 2009 14:41
    Moderador
  • Já utilizei nolock e o problema é o mesmo
    os index que utilizo são:
    na tabela ml:
           dilno ascending
          origem ascending
          mes ascending
    Criei ainda este index      
     CREATE NONCLUSTERED INDEX [_dta_index_ml_7_1517586282__K3_4_5_6] ON [dbo].[ml]
    (
     [dilno] ASC
    )
    INCLUDE ( [docnome],
    [adoc],
    [data]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]

    na tabela ol:
     
    olstamp
    data

    Fidalgo
    terça-feira, 30 de junho de 2009 16:10
  • Fidalgo,

    Qual a volumetria das 2 tabelas?

    e o plano de execução? apontao maior consumo onde?

    Att.

    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    terça-feira, 30 de junho de 2009 17:12
    Moderador
  • Fidalgo,

    Esta base de dados foi importada de alguma versão anterior do SQL Server?

    Você já verificou como esta as configurações dos índices e estatísticas do sistema.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 30 de junho de 2009 18:41
    Moderador
  • Foi importada do sql server 2005, já procedi à reindexação e update estatistics e o problema continuou.

    Fidalgo
    terça-feira, 30 de junho de 2009 21:38
  • Boa Noite,

    Esse teste só será válido se a base for exatamente a mesma com as mesmas quantidades de registros (pressupondo que os índices também já são os mesmos). Se isso não for verdadeiro o teste não é válido. Na hipótese dessas condições serem atendidas, só mesmo vendo o plano de execução para entender o que aconteceu.

    De qualquer forma, sugiro abandonar o trágico NOT IN. Maiores detalhes em:

    Piores práticas - Utilização do operador NOT IN
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!280.entry

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    O que é Cross Database Ownership Chaining ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!620.entry
    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 1 de julho de 2009 01:07
  • Já percebi o problema, utilizei plano de execução e verifique que a query está a fazer loop e este lop deve-se ao facto de a instrução
    "select dilno from ol where plano=1" está errado visto que o campo dino passou a chamar-se dilnoplano
    Fidalgo
    quarta-feira, 1 de julho de 2009 08:47