Translate

Mostrando postagens com marcador Performance. Mostrar todas as postagens
Mostrando postagens com marcador Performance. Mostrar todas as postagens

sábado, 19 de outubro de 2024

BACPAC restore, dicas para melhorar a performance.

 É comum termos problemas com o tempo necessário para que um arquivo do tipo .bacpac seja restaurado independente de ser uma VM em seu PC ou Laptop ou em uma VM hospedada no Azure (CHE).

As ferramentas disponiveis para trabahar com o bacpac são as seguintes: SQLPackage e D365fo.tools

Ambas as ferramentas possuem variáveis para ajudar nesta tarefa de acelerar o tempo necessário para o restore...

Utilizar disco SSD durante o restore obviamente ajuda a melhorar o tempo de restore se comparado a um disco do tipo HDD. Não creio que você utilize disco do tipo HDD em seu PC ou Laptop hoje em dia, se este for o seu caso, você não tem salvação amigo... vai comprar um SSD pelamor!!!

Em VM´s no Azure, estratégias de gerenciamento de disco podem lhe ajudar a melhorar a performance de toda a VM. Após a criação da VM, com poucas mudança, você pode ter a flexibilidade de alterar o disco onde os arquivos do banco de dados ficam armazenados. Desta forma será possível conrverte-los entre SSD e HDD de acordo com a necessidade!

Tendo o hardware adequado você verá uma melhora no tempo de restore do bacpac com certeza!

Utilizando o SQLPackage, temos alguns comandos que podem ajudar nesta situação. um deles é o RebuildIndexesOfflineForDataPhase=True. Com este comando o rebuild dos indices acontece de forma offline. Sugiro obviamente que você faça seus testes! O ganho de tempo com este comando é visivel e significativo.

Outro comando usando o SQLPackage é o DisableIndexesForDataPhase=FALSE. Durante o restore notamos que o "disable index" é executado, logo após o bacpac começa a trabalhar com as tabelas e ao final os indices são habilitados novamente. Usando o comando DisableIndexesForDataPhase=FALSE a importação acontece sem o "disable" e o "enable" dos indices. Basicamente com este comando os indices não são recriados. As tabelas continuam com os indices, eles apenas não serão atualizados! Em meu teste o tempo de restore do bacpac caiu pela metade! Reforço que você DEVE fazer seus próprios testes e analisar o resultado com cuidado!

Outra alternativa é a opção "Delayed Durability". Esta opção está disponivel apenas quando o banco de dados já existe:


O Delayed Durability altera a forma como o SQL utiliza o arquivo de log, diminuindo a escrita em disco e com isso diminuido o I/O. Cuidado com esta opção pois ela pode causar falhas nos dados, se por qualquer razão o Windows se reiniciar durante o processo, você terá que reiniciar o restore.
Como esta opção somente fica disponivel para um banco que já existe, eu inicio o comando de restore e fico atendo ao momento em que o SQLPackge cria o banco no SQL Server, logo após a criação do banco de dados eu executo a seguinte query no SQL:

USE [master]
GO
ALTER DATABASE [DBName] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [DBName] SET DELAYED_DURABILITY = FORCED WITH NO_WAIT
GO


Existem outros comandos para o SQLPackage, veja mais deles neste link: SQL Pacakge

O D365fo.tools tem outros comandos que nos ajudam a melhorar o tempo de restore, um deles é o "Clear-D365TableDataFromBacpac". Com este comando você pode remover tabelas "indesejadas" antes de iniciar o restore caso você não tenha feito isso antes de exportar o arquivo .bacpac pelo LCS. Exemplo de uso deste comando: Clear-D365TableDataFromBacpac -Path "C:\Temp\preprod.bacpac" -TableName "*Staging*","BatchHistory","SYSDATABASELOG*", -ClearFromSource

Desta forma o bacpac a ser importado não terá estas tabelas, isso vai acelerar um pouco mais o processo!

Com as dicas acima o tempo de restore com certeza será menor!

Utilize as dicas acima por sua conta e risco, todos juntos ou um a um, faça seus próprios testes e analise os resultados em sua VM.

Boa sorte!

quarta-feira, 6 de janeiro de 2016

segunda-feira, 4 de janeiro de 2016

What’s New in DynamicsPerf 2.0 !!

Olá pessoal!

É isso mesmo, temos disponível o DynamicsPerf 2.0!!!


Rod Hansen trabalhou mais de 600 horas para nos disponibilizar a versão 2.0 desta ótima ferramenta!

Para obter mais detalhes sugiro a leitura de seus dois artigos lançados até este momento no blog Dynamics AX in the Field.

Os links são estes:


What’s New in DynamicsPerf 2.0 !!

 DynamicsPerf 2.0 Scheduling Engine

Aproveitem!

segunda-feira, 8 de setembro de 2014

segunda-feira, 2 de dezembro de 2013

Dica do dia!

Olá pessoal!

Segue abaixo um link muito util que os ajudará a evitar problemas na execução de relatorios do AX2012.

Talvez vocês já tenham visto esta pagina, mas com certeza ela será útil sempre!

Tips to help prevent long-running reports from timing out [AX 2012]

quarta-feira, 28 de agosto de 2013

Performance Tuning Guidelines for Windows Server 2012.

Pessoal, segue abaixo o link para o download de um material extremamente útil para aqueles que trabalham com infra, e não só para Dynamics mas também para diversos outros componentes do Windows Server 2012.

Espero que utilizem o documento, verão que será de grande ajuda!

Performance Tuning Guidelines for Windows Server 2012.

Postado ao som de:
Sonata Arctica -...Of Silence

terça-feira, 11 de junho de 2013

Performance Benchmark Toolkit!

A Microsoft liberou o Performance Benchmark Toolkit.

O download do instalador deve ser feito acessando o Information Source e pelo Microsoft Download Center é possível obter o White Paper!

Vamos aos testes!!!

sábado, 4 de maio de 2013

Dica do dia - Performance AX - SQL

A dica de hoje é sobre a configuração da conta de serviço do SQL Server.

No servidor de banco de dados atribua as permissões de "Lock Page in Memory" e "Perform Volume Maintenance Tasks" para a conta de serviço utilizada para o serviço do SQL Server no Windows.

Para configurar estas permissões utilize o "gpedit.msc".

Expanda as opções Conputer Configuration > Windows Settings > Security Settings > Local Policy e clique em User Rights Assignement. Do lado direito da tela de um duplo clique em "Lock Pages in Memory" e adicione a conta de serviço do SQL Server. Repita o processo para a opção "Perform Volume Maintenance Tasks".






Clique em OK até fechar todas as janelas, não se esqueça de repetir estes passos para a opção "Perform Volume Maintenance Tasks".

Até a próxima dica!

quinta-feira, 2 de maio de 2013

Dica do Dia - Performance AX

Talvez  muitos já conheçam a dica de hoje, mas nunca é demais repetir!

Para o servidor, ou servidores, de banco de dados, a Microsoft sugere em suas documentações, que a função Hyper Threading seja desabilitada na BIOS. Isso logicamente deverá ser feito se seu servidor de banco de dados for um servidor físico.

As configurações de "Power Saving features" também devem ser desabilitadas pois podem causar problemas de performance.

Altere também, em todos os servidores envolvidos, as configurações de energia, escolha a opção para obter a melhor performance.




E nas propriedades do sistema ajuste as configurações para obter a melhor performance para o sistema.
Depois na aba Advanced ajuste as configurações para "background services".




E por hoje é isso. Espero que a dica acima sejam uteis!




Até a próxima dica!!

Ao som de: Accept - I'm Rebel - 1980.

quarta-feira, 1 de maio de 2013

Dicas para melhorar a performance do AX2012 R2!

Olá pessoal!

Vou iniciar uma seria de posts com diversas dicas para melhorar a performance do AX2012 R2. Algumas destas dicas serão validas também para o AX2009.

A dica de hoje é a seguinte:

Sabemos que o AX2012 R2 está com um visual melhorado, mais bonito, mais cheio de detalhes... Mas... Estes "detalhes" a mais são de fato necessários para o usuário final?

Vejamos a tela abaixo para sabermos do que estou falando exatamente:




Nesta imagem eu abri a tela de Clientes do Contas a Receber. Nesta mesma tela se eu tivesse algum cliente registrado ele seria exibido no centro da tela. No lado direito da tela nos temos algumas opções a mais, melhorias do Dynamics AX2012 para facilitar a utilização do Client do AX2012. Estes detalhes a mais exibidos do lado direito da tela são os "FactBoxes". Já na parte de baixo da tela temos mais detalhes sendo exibidos, esta parte de baixo recebe o nome de "Preview Pane".

Os FactBoxes e PreviewPanes de fato são de grande utilidade tendo em vista que teremos alguns detalhes importantes sem a necessidade de sair desta tela. Mas esta facilidade pode trazer problemas de performance...

Cada FactBox e cada PreviewPane é um form diferente, por está razão códigos de inicialização de cada form serão executados para cada um deles. Cada FactBox e PreviewPane é executado em sequência, primeiro um e depois outro e assim em diante.

Se um FactBox é expandido e este contem uma query, como todos os desta tela de clientes, esta query será enviada do Client para o AOS e depois para o Banco de Dados e logicamente isso aumenta a carga nos servidores. Alguns FactBoxes possuem queries que são bem "pesadas".

Como então podemos resolver este problema?

Avalie se de fato este recurso será útil ao usuário final e de acordo com esta avaliação algumas ações podem ser tomadas.

Um desenvolvedor poderá alterar o Form e remover FactBoxes desnecessários.

O próprio usuário poderá ocultar os FactBoxes que não serão utilizados. Um FactBox oculto não executará nenhuma query. Esta configuração afetará apenas o usuário atual, os demais continuaram a utilizar os Factboxes normalmente.

E por fim, os administradores de sistema podem configurar estas opções para todo o sistema, afetando desta forma todos os usuários do AX. Como fazer isso?

Abra o AX e acesse Administração do Sistema > Configuração > Sistema > Opções de Desempenho do Cliente.




Na opção Quadro de Fatos (FactBox), nós podemos simplesmente desabilitar a exibição destes ou configurar um TimeOut. Este tempo é configurado em segundos. Isso significa que se um FactBox tiver uma query, está terá apenas 01 segundo para ser executada, caso a query não seja executada neste tempo ela é cancelada.
Podemos também desabilitar "Visualizar" (Preview Pane).





As confgurações feitas nesta tela afetarão todos os usuários do Dynamics AX, incluindo os administradores do sistema.

Espero que esta dica seja útil a vocês.

Até a próxima dica!

Ao som de Metalica - The Black album (1991)!!!

sexta-feira, 26 de abril de 2013

Dynamics AX2012 - Compilação.

Olá pessoal, recentemente houve uma "discussão" muito boa referente a copilação do AX2012 no forum de AX da Microsoft. Sugiro que acompanhem a discussão e aproveitem para contribuir com suas experiencias neste tema.

A discussão no forum gerou um post extremamente valioso no blog do Joris de Gruyter. Com a autorização do Joris eu traduzo este post para o nosso idioma!

"
Tenho certeza que a maioria de vocês sabem, tempos de compilação no Dynamics AX 2012 são uma preocupação conforme mais funcionalidades vão sendo adicionadas ao AX. Especialmente em nossos ambientes de testes, que são máquinas (não otimizadoas) virtuais, estamos falando de cerca de 3 horas para AX 2012 RTM / FPK e cerca de 5 horas para R2. Houveram discussões sobre este assunto no Forum Microsoft Dynamics AX, e parece haver grandes diferenças nas experiências de tempos de compilação. Depois de muita discussão com outras pessoas sobre os tema, e chats com as pessoas da Microsoft, eu acho que está bem claro em quais áreas é preciso se concentrar para otimizar os tempos de compilação.

 1) O compilador AX foi originalmente construído quando nem se falava em multi-core. Assim, como resultado, você já deve ter notado que uma compilação utiliza apenas um thread. Com a tendência atual de mais núcleos, mas a uma velocidade mais baixa de clock, uma máquina "mais velha" (tipo de CPU) pode possivelmente ter um melhor desempenho do que uma nova, ou um Desktop pode ser melhor do que um servidor dedicado.
2) A comunicação entre AX e SQL é crítica. A comunicação com o Model Store é crítica ( O AOS recebe o código fonte a partir do Model Store, compila, e coloca de volta os binários no Model Store).
3) O Model Store está no SQL, portanto o SQL tem que executar de forma otimizada.


Para este fim, eu me propus a construir uma das bases de código do nosso cliente (AX 2012 RTM CU3, sem Feature Pack) em uma máquina de compilação "experimental". Esta base de código vem tomando uma média de tempo de compilação de 3 a 3,2 horas a cada vez em nossa AOS virtual conectado a um SQL físico.

A nova configuração? Laptop Dell Latitude E6520 

* Core i7-2760QM CPU @ 2.4GHz, 4 Cores, 8 Logical Processors
* 8 GB memory
* High performance SSD (Samsung 840 Pro), 256GB
* Windows Server 2012, SQL 2012, AX 2012 RTM CU4


Além do hardware (velocidade de clock de 2,4 GHz - o número de núcleos não importa, SSD para maximizar o rendimento SQL), os elementos fundamentais da nossa configuração foram colocar o AOS e o servidor SQL nessa mesma máquina e desabilitar TCP / IP  nos protocolos de servidor do  SQL para que ele use o Shared Memory.

A diferença no tempo de compilação é impressionante. Na verdade, eu executei várias vezes, porque eu pensei que tinha feito algo errado. No entanto, uma vez que este é UM um sistema automatizado usando o TFS, eu sei que os passos, os códigos e tudo o resto são exatamente os mesms, por definição.




Old Build Server

New Build Server
Remove old models
00:00:27

00:00:03
Start AOS
00:01:26

00:00:25
Synchronize (remove old artifacts from DB)
00:06:52

00:05:57
Import XPOs from TFS
00:13:17

00:03:55
Import VS Projects
00:00:29

00:00:11
Import Labels
00:00:22

00:00:08
Synchronize (with new data model)
00:05:42

00:01:55
X++ Compile
02:29:36

00:41:28
CIL Generation
00:13:41

00:05:29
Stop AOS
00:00:10

00:00:03
Export Built Model
00:00:42

00:00:12
Total Build Time
03:14:43

01:00:59

Então, sim, o tempo de compilação caiu para 41 minutos! Agora eu preciso de uma outra máquina para a compilação do R2 :-) vou postar os tempos de compilação do R2 assim que conseguir!
" 

Os dizeres acima foram traduzidos do seguinte link:
http://daxmusings.codecrib.com/2013/04/dynamics-ax-2012-compile-times.html

Todos os creditos do post acima vão para Joris de Gruyter!

Em resumo pessoal, para quem não acompanha o  Forum Dynamics AX, passe a acompanhar, muitas dicas e discussões interessantes estão acontecendo por lá.

Neste caso em especifico, a discução iniciada por Tommy Skaue, que gerou o post acima, pode ser acompanhada aqui.

As dicas em todo este post são de grande utilidade, acredito que nos ajudarão muito nas proximas implementações e atualizações do AX2012!

Muito obrigado ao Joris por me permitir traduzir este post e ao tommy por ter iniciado este assutno no forum!

quarta-feira, 24 de abril de 2013

Dynamics AX Performance Optimization Guide

Pessoal, espero que todos estejam bem nesta quarta-feira de Sol que não esquenta!!

Vejam o livro abaixo, muito util a qualquer profissional que trabalhe com o Microsoft Dynamics AX:

http://www.amazon.com/Dynamics-Performance-Optimization-Guide-Microsoft/dp/1481100750/ref=sr_1_1?ie=UTF8&qid=1366372545&sr=8-1&keywords=dynamics+ax+performance+optimization+guide

Onde Comprar: Amazon.com