在下文我们将研究表格性能在各种显示方案下的调优:
我们将从顶部的优化过程中,浏览如下:查看ADFM和ADFBC
ADFM
在界面我们使用af:table组件
打开data control面板,拖拽一个VO到你的页面上做成一个table.
单击你最新的那个table然后选择属性,进入到behaviorshowdetail
FetchSize定义了 从服务器一次传递给客户端行的数量,FethcSize默认是与绑定的VO的迭代器的rangeSize是同步的。
为了获得最佳性能,Oracle建议保持同步表FETCHSIZE和迭代RangeSize,同时 在满足视图行数的前提下,rangesize应该尽可能的小。
更多表组件的性能方面的考虑,可以在这里找到:
table的 rangesize是个传统的属性,我们用户一般不会考虑其值。
打开jspx页面所对应的pageDefine文件,选择需要优化的table所对应的Iterator查看属性,RangSize建议等于25
Iterator'sRangeSize属性定义了从BC层传到ADFM记录的行数
当iterator创建时 RangeSize默认被赋值25
为了减少服务器客户端的交互传送TABLE的数据,Oracle建议把rangeSize的值设成你的UITABLE充满整个屏幕时的行数。
ADF BC
在VO中也要做出必要的配置
Open Model project -> select your view object -> General -> Tuning
或者在此VO被引用到某个AM中的单独调优路径
Open Model project -> Application Module -> Data Model -> View Object Instances -> Data Model -> select your view object -> press Edit… button -> Tuning
对于您的需求,您可以使用上述任何一种方法,但要记住,在第一种情况下,将配置所有实例的应用,而在第二种情况下只对选定的实例将被改变
in batches of
首先我们需要设置 in batches of 这个域,它指的是一次同时从数据库里读取的记录数;
当视图对象创建领域分批被自动设置为1,这可能会影响性能,除非只有1行被取出,这几乎是从来没有的情况下。
而为了最优的性能,Oracle文档中告诉我们 in batches of 设置的数应该为n+1,其中n为UI展现给用户的行数,因为多出的1我们可以认为就不必再有下一次请求就可以让下个选项启用或禁用。这就是我们看到的图中显示的是26而给用户展现的却是25(iterator设置的和Fetchsize也是25).现在table中就会和服务器交互一次取出25行数据而如果VO in batches of 设为默认1的话则交互则要26次。
Steve Muench建议in batches of 应该设为n+3,这个理论在https://forums.oracle.com/forums/thread.jspa?threadID=1073058争论不休。
Query Optimizer Hint field or QueryHint是用来提高查询速度用的。
在我们的例子中,查询优化器提示栏位设定为FIRST_ROWS_26在这种情况下,,一个基于成本的方法,用于优化与目标的最佳响应时间查询返回的26行=>更好的速度=>提高了整体性能。.尊重您的特殊需要,可以使用下面的查询提示:ALL_ROWS,FIRST_ROWS_n和FIRST_ROWS。
所有的 query optimization hints信息都会在下文说明