Dynamics AX预加载行为

时间:2015-10-08 12:16:45

标签: performance caching axapta dynamics-ax-2012-r2

问题

  • 用户选项preload是否指客户端或服务器上的缓存?

  • 有没有办法让这种情况异步发生,以便用户在首次从表格中请求数据时不会受到很大的性能影响?

更多信息

在Dynamics Ax 2012中,在File>下; User Options> Preload用户可以选择第一次访问哪些表格。

我没有发现任何话要说这种行为是否与客户端或AOS上的缓存有关。

  • 它是用户设置的事实意味着它是客户端。
  • 但它可能是一个AOS设置,其中具有此选项的用户最初会预先加载整个表,而那些没有会受益于其他用户引起的任何缓存,但不会自行触发加载。 / LI>

如果是后者我们可以通过从所有(人)用户中删除此选项来提高性能,只在我们的批处理用户帐户上启用它,在每个AOS上安排作业以请求每个表的记录,从而在没有任何用户受到负面影响的情况下触发预加载。

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

1 个答案:

答案 0 :(得分:1)

如果表很大或经常更改,则它不是整个表缓存的候选者。这适用于普通用户和批量用户。

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

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

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

See Set-based Caching

  

当你将表的CacheLookup属性设置为EntireTable时,所有的   第一次选择后,表中的记录将放在缓存中。   这种类型的缓存遵循单记录缓存的规则。这个   表示SELECT语句WHERE子句必须包含相等性   测试表中定义的唯一索引的所有字段   PrimaryIndex属性。

     

EntireTable缓存位于服务器上   并由应用程序对象服务器的所有连接共享   (AOS)。如果在客户端层上对表进行选择   EntireTable被缓存,它首先查找自己的缓存,然后搜索   服务器端的EntireTable缓存。

     

为其创建了EntireTable缓存   给定公司的每个表。如果您有两个选择   对于不同公司的表,整个表都缓存了两次。

     

注意:避免对大表使用EntireTable缓存,因为一次   缓存大小达到128 KB,缓存从内存移动到磁盘。   磁盘搜索比内存搜索慢得多。