Dynamics AX 预加载行为
Dynamics AX Preload Behaviour
问题
用户选项preload
是指缓存在客户端还是服务器?
是否有任何方法可以使此异步发生,以便用户在首次从 table 请求数据时不会对性能造成很大影响?
更多信息
在 Dynamics Ax 2012 中,在 File
> User Options
> Preload
下,用户可以 select 第一次预加载哪些 table重新访问。
我没有发现任何可以说明此行为是否与客户端或 AOS 上的缓存有关的内容。
- 它是用户设置这一事实意味着它是客户端。
- 但这可能是一个 AOS 设置,在该设置中,具有此选项的用户会首先预加载整个 table,而没有此选项的用户将受益于其他用户造成的任何缓存,但不会触发自己加载。
如果是后者,我们可以通过从所有(人类)用户中删除此选项来提高性能,只在我们的批处理用户帐户上启用它,在每个 AOS 上安排作业以从每个 table,从而触发预加载,而不会对任何用户造成负面影响。
参考:http://dynamicbusinesssolutions.ru/axshared.en/html/9cd36702-2fa7-470c-a627-08
如果 table 很大或经常更改,则它不是整个 table 缓存的候选对象。普通用户和批量用户都适用
EntireTable 缓存位于服务器上,但加载是由用户发起的,第一个执行 select
的用户会受到性能影响。
要成功禁用 table 预加载,您可以使用 Admin
用户禁用它,它将应用于所有用户。或者您可以让所有用户自行禁用它。
就我个人而言,我从不更改用户设置。如果 table 很大,我将 table CacheLookup
属性 更改为自定义。
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.
问题
用户选项
preload
是指缓存在客户端还是服务器?是否有任何方法可以使此异步发生,以便用户在首次从 table 请求数据时不会对性能造成很大影响?
更多信息
在 Dynamics Ax 2012 中,在 File
> User Options
> Preload
下,用户可以 select 第一次预加载哪些 table重新访问。
我没有发现任何可以说明此行为是否与客户端或 AOS 上的缓存有关的内容。
- 它是用户设置这一事实意味着它是客户端。
- 但这可能是一个 AOS 设置,在该设置中,具有此选项的用户会首先预加载整个 table,而没有此选项的用户将受益于其他用户造成的任何缓存,但不会触发自己加载。
如果是后者,我们可以通过从所有(人类)用户中删除此选项来提高性能,只在我们的批处理用户帐户上启用它,在每个 AOS 上安排作业以从每个 table,从而触发预加载,而不会对任何用户造成负面影响。
参考:http://dynamicbusinesssolutions.ru/axshared.en/html/9cd36702-2fa7-470c-a627-08
如果 table 很大或经常更改,则它不是整个 table 缓存的候选对象。普通用户和批量用户都适用
EntireTable 缓存位于服务器上,但加载是由用户发起的,第一个执行 select
的用户会受到性能影响。
要成功禁用 table 预加载,您可以使用 Admin
用户禁用它,它将应用于所有用户。或者您可以让所有用户自行禁用它。
就我个人而言,我从不更改用户设置。如果 table 很大,我将 table CacheLookup
属性 更改为自定义。
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.