问题
用户选项preload
是否指客户端或服务器上的缓存?
有没有办法让这种情况异步发生,以便用户在首次从表格中请求数据时不会受到很大的性能影响?
更多信息
在Dynamics Ax 2012中,在File
>下; User Options
> Preload
用户可以选择第一次访问哪些表格。
我没有发现任何话要说这种行为是否与客户端或AOS上的缓存有关。
如果是后者我们可以通过从所有(人)用户中删除此选项来提高性能,只在我们的批处理用户帐户上启用它,在每个AOS上安排作业以请求每个表的记录,从而在没有任何用户受到负面影响的情况下触发预加载。
参考:http://dynamicbusinesssolutions.ru/axshared.en/html/9cd36702-2fa7-470c-a627-08
答案 0 :(得分:1)
如果表很大或经常更改,则它不是整个表缓存的候选者。这适用于普通用户和批量用户。
EntireTable缓存位于服务器上,但加载是由用户启动的,执行select
的第一个用户会受到性能影响。
要成功禁用预加载表,您可以使用Admin
用户将其禁用,它将适用于所有用户。或者您可以让所有用户自行禁用它。
我个人从不改变用户设置。如果表很大,我将表CacheLookup
属性更改为自定义。
当你将表的CacheLookup属性设置为EntireTable时,所有的 第一次选择后,表中的记录将放在缓存中。 这种类型的缓存遵循单记录缓存的规则。这个 表示SELECT语句WHERE子句必须包含相等性 测试表中定义的唯一索引的所有字段 PrimaryIndex属性。
EntireTable缓存位于服务器上 并由应用程序对象服务器的所有连接共享 (AOS)。如果在客户端层上对表进行选择 EntireTable被缓存,它首先查找自己的缓存,然后搜索 服务器端的EntireTable缓存。
为其创建了EntireTable缓存 给定公司的每个表。如果您有两个选择 对于不同公司的表,整个表都缓存了两次。
注意:避免对大表使用EntireTable缓存,因为一次 缓存大小达到128 KB,缓存从内存移动到磁盘。 磁盘搜索比内存搜索慢得多。