Translate

quarta-feira, 8 de março de 2017

Trace flag 9481 e Dynamics AX2012 R3 CU8.

Olá senhoras e senhores!

Hoje vou apenas compartilhar um fato ocorrido em um ambiente de AX2012 que ajudei a implementar!

O ambiente consiste em em 07 servidores, todos físicos, novos e muito mais do que suficientes para suas funções atuais, sendo que o mais fraco é um Dell six core com 32GB de RAM e discos SAS...

O ponto focal deste post é o AX2012 R3 CU8 e o SQL Server 2014...

Neste ambiente de AX tínhamos telas como as de "fatura de fornecedor" e a de "diário de faturas" que demoravam muito, mas muito mesmo para serem abertas... vale ressaltar que nestas telas haviam algumas alterações relacionadas apenas ao layout, nenhum código relacionado a consultas!

Outras telas sem custons sofriam com o mesmo problema.

As rotinas de manutenção dos bancos de dados estavam corretamente implementadas no SQL server de acordo com as boas práticas indicadas pelo time de PFE da Microsoft assim como diversos outros manuais disponíveis em blogs e principalmente no Partner Source!

Como não havia problemas na estrutura de servidores e nada relacionado a customizações passou-se a pesquisar sobre o funcionamento do SQL Server, analisando a forma como o SQL trabalha para exibir estas telas. Usando as ferramentas de monitoramento do SQL foi possível descobrir processos lentos nos planos de execução.

Pesquisando mais sobre "query plan" chegamos ao seguinte link: http://dba.stackexchange.com/questions/136768/query-wont-compile-run/136842

Também é possível obter mais detalhes neste link: https://support.microsoft.com/pt-br/help/2801413/enable-plan-affecting-sql-server-query-optimizer-behavior-that-can-be-controlled-by-different-trace-flags-on-a-specific-query-level

Breve detalhe sobre o Trace Flag 9481:
Use when running SQL Server 2014 with the default database compatibility level 120. Trace flag 9481 forces the query optimizer to use version 70 (the SQL Server 2012 version) of the cardinality estimator when creating the query plan.

Veja mais sobre Trace Flags para o Dynamics AX aqui.

Após habilitar este trace flag no SQL Server e limpar o cache do SQL Server a abertura das telas que apresentavam problemas de lentidão passou a ser instantânea.

Obviamente este procedimento foi testado em outros dois ambientes antes de entrar definitivamente em produção!

Devo dizer que toda a analise feita em ambiente de desenvolvimento nos levou ao ponto em que habilitar este flag foi necessário, e com um ótimo resultado. Tendo em mente que este ambiente de AX é diferente de outros, sugiro que se tiverem o mesmo problema, façam seus testes habilitando este trace flag, analisem os resultados e sigam em frente com a melhor decisão para seu ambiente!

Habilitar trace flags afeta todo o SQL Server, mas no nosso caso este SQL Server é 100% dedicado aos 03 bancos de dados do Dynamics AX. Caso seu SQL Server tenha outros bancos, são necessários vários outros testes para analisar o impacto nas demais aplicações!

Fica então a dica, eu testei no meu ambiente e aqui o resultado foi positivo!

O Blog agradece a ajuda de Otavio Anaga na criação deste post!

Até a próxima!