Dynamics AX 预加载行为

Dynamics AX Preload Behaviour

问题

更多信息

在 Dynamics Ax 2012 中,在 File > User Options > Preload 下,用户可以 select 第一次预加载哪些 table重新访问。

我没有发现任何可以说明此行为是否与客户端或 AOS 上的缓存有关的内容。

如果是后者,我们可以通过从所有(人类)用户中删除此选项来提高性能,只在我们的批处理用户帐户上启用它,在每个 AOS 上安排作业以从每个 table,从而触发预加载,而不会对任何用户造成负面影响。

参考:http://dynamicbusinesssolutions.ru/axshared.en/html/9cd36702-2fa7-470c-a627-08

如果 table 很大或经常更改,则它不是整个 table 缓存的候选对象。普通用户和批量用户都适用

EntireTable 缓存位于服务器上,但加载是由用户发起的,第一个执行 select 的用户会受到性能影响。

要成功禁用 table 预加载,您可以使用 Admin 用户禁用它,它将应用于所有用户。或者您可以让所有用户自行禁用它。

就我个人而言,我从不更改用户设置。如果 table 很大,我将 table CacheLookup 属性 更改为自定义。

See Set-based Caching:

When you set a table's CacheLookup property to EntireTable, all the records in the table are placed in the cache after the first select. This type of caching follows the rules of single record caching. This means that the SELECT statement WHERE clause must include equality tests on all fields of the unique index that is defined in the table's PrimaryIndex property.

The EntireTable cache is located on the server and is shared by all connections to the Application Object Server (AOS). If a select is made on the client tier to a table that is EntireTable cached, it first looks in its own cache and then searches the server-side EntireTable cache.

An EntireTable cache is created for each table for a given company. If you have two selects on the same table for different companies the entire table is cached twice.

Note: Avoid using EntireTable caches for large tables because once the cache size reaches 128 KB the cache is moved from memory to disk. A disk search is much slower than an in-memory search.