none
Índices Quebrados SQLSERVER 2005 RRS feed

  • Pergunta

  • Bom dia.

    Sou DBA Oracle e possuo um conhecimento básico de administração de SQLSERVER. Gostaria da orientação de vocês para entender um problema constante na empresa que trabalho.

    O ERP da empresa que trabalho está em um BD com SGDB SQLSERVER 2005 SP3. Neste ERP há uma rotina de fechamento que faz uma série de Updates em diversas tabelas. A cada fechamento, por ser uma rotina pesada e concorrer com processos da empresa, que roda 6x24, dá alguns lock´s. De vez em quando dá erro (timeout por causa dos lock´s) e colocamos a rotina novamente, que continua de onde parou.

    Desde o ano passado, constantemente temos problemas de consistência dos resultados. A empresa alega que todos os problemas que temos são porque nossos índices do DB são "quebrados". Eu discordo deles porque todos os domingos eu faço um reindex no BD, update statistics e checkdb. Para os indices criados nas tabelas que estão relacionadas ao fechamento, eu faço um acompanhamento especial...

    A empresa do ERP diz que é indice porque quando fazemos um novo fechamento, após recriar os indices, dá certo.

    Enfim, eu gostaria de saber no SQL há essa possibilidade de quebrar indices constantemente, principalmente por causa de quedas relacionadas aos Lock´s do DB?

    Podem me orientar nessa situação?

    Obrigado.

    Abraços

    quinta-feira, 23 de agosto de 2012 13:18

Respostas

  • Bom Dia,

    Tendo por premissa que o índice é um atalho ao dados, dizer que a fragmentação de um índice provoca um resultado inconsistente é no mínimo um insulto a sua inteligência. O índice não estar no melhor estado de saúde, ou seja, 100% desfragmentado poderá influenciar em lentidão, bloqueios e até deadlocks. A ausência de índices úteis farão as consultas demorarem mais. A presença de índice inúteis fará com que as instruções de INSERT, UDPATE e DELETE demorem mais. Mas em hipótese nenhuma, essas situações farão com que os dados fiquem inconsistentes. Isso mais me parece a velha desculpa (típica da maioria dos fornecedores de ERP) de atribuir ao cliente a culpa por falhas na programação do software (apostaria aqui como essa rotina deve usar vários NOLOCKs e igualmente apostaria que o fabricante nada diz a respeito disso).

    Ao meu ver, um fornecedor que diz que o índice está "quebrado" já não merece crédito. Em nenhum local existe essa nomenclatura de índice "quebrado". O que eu faria seria o seguinte:

    • Garanta que suas rotinas estão sendo executadas
    • Opte pelo REBUILD ONLINE sempre que possível
    • Captura as métricas através das DMVs de tempos em tempos para garantir que os índices estão em perfeito estado
    • Apresente as referências bibliográficas que você está utilizando
    • Cobre do fornecedor uma explicação técnica (com referências na literatura) de que o índice quebrado pode provocar inconsistências

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    • Marcado como Resposta TS.TiagoSilva sexta-feira, 24 de agosto de 2012 14:28
    quinta-feira, 23 de agosto de 2012 14:57

Todas as Respostas

  • Bom Dia,

    Tendo por premissa que o índice é um atalho ao dados, dizer que a fragmentação de um índice provoca um resultado inconsistente é no mínimo um insulto a sua inteligência. O índice não estar no melhor estado de saúde, ou seja, 100% desfragmentado poderá influenciar em lentidão, bloqueios e até deadlocks. A ausência de índices úteis farão as consultas demorarem mais. A presença de índice inúteis fará com que as instruções de INSERT, UDPATE e DELETE demorem mais. Mas em hipótese nenhuma, essas situações farão com que os dados fiquem inconsistentes. Isso mais me parece a velha desculpa (típica da maioria dos fornecedores de ERP) de atribuir ao cliente a culpa por falhas na programação do software (apostaria aqui como essa rotina deve usar vários NOLOCKs e igualmente apostaria que o fabricante nada diz a respeito disso).

    Ao meu ver, um fornecedor que diz que o índice está "quebrado" já não merece crédito. Em nenhum local existe essa nomenclatura de índice "quebrado". O que eu faria seria o seguinte:

    • Garanta que suas rotinas estão sendo executadas
    • Opte pelo REBUILD ONLINE sempre que possível
    • Captura as métricas através das DMVs de tempos em tempos para garantir que os índices estão em perfeito estado
    • Apresente as referências bibliográficas que você está utilizando
    • Cobre do fornecedor uma explicação técnica (com referências na literatura) de que o índice quebrado pode provocar inconsistências

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    • Marcado como Resposta TS.TiagoSilva sexta-feira, 24 de agosto de 2012 14:28
    quinta-feira, 23 de agosto de 2012 14:57
  • Gustavo, bom dia.

    Depois da sua resposta, sem mais.

    Muito obrigado.

    Abs

    Tiago

    sexta-feira, 24 de agosto de 2012 14:25