In Dynamics Ax 2012, table level cache has been performance improving feature.
In Dynamics Ax 2012 we can set both client and server side (AOS) level caches.
When cache at client and server side enabled. Then user query, first search will be done on client side cache, result not found then Ax tries to locate record at server side. In the case of record not found at server side, they will be fetch from table.
Client side cache is exclusive for every client, while Server side cache can be access by any client.
We can set number of records from System administrator module
At performance optimization tab we can set both client side and server side AOS.
In Dynamics Ax 2012, we can set two types of Cache, Single record or set based Cache.
We can set cache type in cacheLookup property of table.
For example we can set cache lookup for custtable as follow
In the case of single record based cache, we can set following properties in cache lookup
- NotInTTS,
- Found
- FoundAndEmpty
For Set-based cache, we have to set the cache lookup to Entire table.
According to Microsoft Documentation
When the CacheLookup table property is set to EntireTable, all the records in the table are put in the cache only if the WHERE clause in the SELECT statement includes equality tests on all fields of the unique index that is defined in the PrimaryIndex table property.
Following consideration required for Set-based or entire table cache.
- Cluster index must be set on table so it will quickly load
- Cache size must be under 218, otherwise cache is moved to disk which is much slower to access.
- Should be used on lookup tables because data is less there.
https://community.dynamics.com/ax/b/axsupport/archive/2015/02/20/dynamics-ax-table-caching-basic-rules