Performance in Dynamics Ax 2012

Today I attended what I think was the most interesting session of the conference for me. (There will be one about AIF today but I think this will not as interesting as what I learned about performance)

Basically what they did can be devided in these categories :

  • Scale up and scale out on AOSs and Clients
  • Utilize more SQL features
  • Application effeciency
  • World class diagnosis tools


The first part was about caching. They added a global cache but this time the cache is also available across sessions.
The cache also get syncronised between the AOS instances, but there is a short delay on this, so you never really can trust that the cache is identically on the other AOS Instances.

As to when the objects in the cache are cleared, there are two main triggers for deleting an object from the cache:

  • The limit of number of objects is reached (to be found in the SysGlobalConfiguration table on SQL Server
  • The developer deletes / overwrites the object in the cache


Before the trace parser was a tool to be installed additionally to Ax but now it is part of the system. There are a few ways in which you can use the trace parser:

  • By starting up the performance cockpit from the tools menu
  • By using it to code by starting and stopping trace and specifying a file to log to.

So this time it is actually much more stable and reliable to use. Actually now it is so easy that each developer should develop with the trace parser next to him at all times to keep performance in mind from the beginning.

Data Access : Ad Hoc mode

When your X++ query is getting too big, then use Ad Hoc mode. Here you would actually only select the fields you need.
Also, set the dynamics property on the query fields to false and set OnlyFetchActive to true on the FormDataSource

By selecting only the things you need, the kernel will not join all the tables in the table hierarchy but also the inherited tables where you need fields from.

SQL TempTable

In the AOT, you can now set the TableType on a table object to one of the following :

  • InMemory (The old in memory temp table)
  • Regular (Non temporary table)
  • TempDB (SQL Server tempDB table)


Here I can be brief (because the white paper about this is going to follow later on)

Basically the RunBase framework is now only there for backward compatibility! So now the new SysOperation framework will be used.
This is residing in the AOS also, but more on that when I have a clearer view on this.

So this is what I could capture from the session. Probably missed a lot of other stuff too but for that, we will have the video’s J

Decisions Dynamics Ax Virtual Conference

This afternoon the virtual conference will take place at 09:00 am EST (3 pm ET).

Decisions technical conference

The session content can be found here but I’m particularly interested in the Performance session (presented by Dick Wenning) and the Batch framework session (presented by Robert Boone).

Please not that registering can still be done and is completely free of charge !
So see you guys at the virtual conference then ! (That is, if I can get to log in to the conference since I haven’t found the login link yet 😉 )