locked
Update Statics RRS feed

  • Pergunta

  • Olá pessoal. Aqui na empresa utilizamos o ERP Protheus (TOTVS) com SQL Server 2008.

    Recentemente estava lendo a documentação sobre banco disponível pela TOTVS e ví, para a questão de performance, a seguinte configuração:

    “É recomendável que por uma questão de performance, os parâmetros AUTO CREATE STATISTICS e AUTO UPDATE STATISTICS estejam como FALSE, e com isso recomendamos também que seja feito diariamente num período de menor utilização do ambiente a coleta de estatísticas dos objetos envolvidos.”

    Eu não sei muito sobre banco e consegui apenas como desativar o create e update statics. A dúvida seria como eu posso fazer o update/create statics manualmente? Desativando isso para o SQL não fazer automático pode impactar algo no meu banco em producão?

    Obrigado.

    segunda-feira, 29 de abril de 2013 12:35

Respostas

  • Caio,

    As estatisticas server para, por exemplo, conceitualmente falando um JOIN é a junção de uma tabela, internamente falando um join pode ser feito de 3 formas:

     - Hash join

     - Nasted loop

     - Merge join

    E as estatisticas servem para o SQL entender qual utilizar aonde quando tiver poucas linhas (Pelas estatisticas) ele deve ir para um caminho de nasted loop enquanto se tiver muitas linhas o SQL paga o preço de uma transformação em tabela hash e então faz o relacionamento.

    O fornecedor do software deve ter falado isso para proteger o sistema e evitar qualquer perda de performance (Ja  trabalhei com o protheus, e acredite, voce terá um enorme trabalho de tunning pela frente....), mas é sem sentido a não ser que voce tenha um enorme controle disso, por isso volto minha recomendação, deixe como True tanto para criação como para atualização, se preferir (Recomendo tambem), sete para um update de estatisticas assincrono conforme comando abaixo:

    ALTER DATABASE SeuBase SET AUTO_UPDATE_STATISTICS_ASYNC ON



    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Caio Tostes segunda-feira, 29 de abril de 2013 13:20
    segunda-feira, 29 de abril de 2013 12:59
    Moderador
  • Inicialmente vou mudar o update pra assincrono e começar a estudar sobre tunning. Obrigado pela ajuda Fabrizzio.

    segunda-feira, 29 de abril de 2013 13:22

Todas as Respostas

  • Caio,

    Por padrão ja vem habilitado como True as 2 opções e sinceramente minha recomendação é que fique como true. Todo caso, os scripts para ser feito manualmente são:

    --Para criar as estatisticas
    CREATE STATISTICS EST_01
    ON dbGCE_NovaFonetica.dbo.TabelaIndice (Id, Nome)
    WITH FULLSCAN, NORECOMPUTE;
    
    --Para atualizar todas as estatisticas
    EXEC sp_updatestats


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 29 de abril de 2013 12:46
    Moderador
  • Fabrizzio, andei conversado com algumas pessoas e me disseram pra deixar como true. Agora o que não entendi foi porque a própria empresa recomenda desativar essas opções...

    O que pode influenciar na base desativando essas opções?

    Só pra complementar eu estou pesquisando sobre essas configurações pois recentemente fiz uma migração de versão do sistema e está muito lento. As builds do sistema estao todas atualizadas por isso estou vendo as configuracoes recomendadas do banco.

    Obrigado pela resposta.


    • Editado Caio Tostes segunda-feira, 29 de abril de 2013 12:54
    segunda-feira, 29 de abril de 2013 12:51
  • Caio,

    As estatisticas server para, por exemplo, conceitualmente falando um JOIN é a junção de uma tabela, internamente falando um join pode ser feito de 3 formas:

     - Hash join

     - Nasted loop

     - Merge join

    E as estatisticas servem para o SQL entender qual utilizar aonde quando tiver poucas linhas (Pelas estatisticas) ele deve ir para um caminho de nasted loop enquanto se tiver muitas linhas o SQL paga o preço de uma transformação em tabela hash e então faz o relacionamento.

    O fornecedor do software deve ter falado isso para proteger o sistema e evitar qualquer perda de performance (Ja  trabalhei com o protheus, e acredite, voce terá um enorme trabalho de tunning pela frente....), mas é sem sentido a não ser que voce tenha um enorme controle disso, por isso volto minha recomendação, deixe como True tanto para criação como para atualização, se preferir (Recomendo tambem), sete para um update de estatisticas assincrono conforme comando abaixo:

    ALTER DATABASE SeuBase SET AUTO_UPDATE_STATISTICS_ASYNC ON



    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Caio Tostes segunda-feira, 29 de abril de 2013 13:20
    segunda-feira, 29 de abril de 2013 12:59
    Moderador
  • Fabrizzio estou ficando muito preocupado com a performance do banco/protheus (rss). Como essa parte de tunning funciona? Seria ideal contratar algum DBA pra fazer ou tem material pra eu estudar e fazer? O tunning é feito de acordo com o que o sistema (protheus) trabalha ou é feito na base independente de qual sistema.

    segunda-feira, 29 de abril de 2013 13:13
  • Caio,

    Quanto a contratação tudo depende do seu conhecimento. O tunning é feito na base diretamente independendo do que esta se conectando.

    Algumas ações são criações de indices, tunning de hardware, algumas mudanças em querys (Com cuidado, sempre tendo o cuidado de retornar o mesmo resultado...) dentre outros.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 29 de abril de 2013 13:14
    Moderador
  • Inicialmente vou mudar o update pra assincrono e começar a estudar sobre tunning. Obrigado pela ajuda Fabrizzio.

    segunda-feira, 29 de abril de 2013 13:22