在下文我們将研究表格性能在各種顯示方案下的調優:
我們将從頂部的優化過程中,浏覽如下:檢視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資訊都會在下文說明
Access Mode
在預設情況下 access mode設定成Scrollable,隻要您不通過大資料量進行疊代它都能滿足您的要求。如果需要大資料集,您應改為 range paging或range paging incremental。 當我們的table來自一個VO包含100W條記錄時,試圖滾動現實另一次互動出現的資料時,如下視窗問題會展現愛你在浏覽器中:
在控制台會抛出outofmemory錯誤。 是以access mode屬性對我們來說是十分重要的,怎樣選擇合适的mode您最好閱讀 chapter 39.1.5 Efficiently Scrolling Through Large Result Sets Using Range Paging(位址為:http://docs.oracle.com/cd/E14571_01/web.1111/b31974/bcadvvo.htm#insertedID0) 更多的ADF VO性能調優操作如下: BUG1:
确定您的Range paging cache factor設定為2 拖拽一個VO到PAGE上,滾動table上的行 則會提示 table’ s vertical scroll bar will DISAPPEAR。這個BUG在谷歌浏覽器和火狐測試過 BUG2: access mode選擇scrollable range size 設為25 在page上使用鍵盤上的 up 和down 不會現實最後的page。就像hit a wall 您可以使用滑鼠滾軸而不使用鍵盤,或者table的滑塊。這隻是在谷歌或火狐好用。 BUG3: 如果 access mode設為 RangePaging range size = 25或 acess mode設為Range Paging incremental range size = 1 Range Paging Cache factor=1 查詢table會提示currentrow is lost .同時在控制台報錯誤 no row found for rowkey.