天天看點

譯 ADF View Object Performance Tuning Analysis

在下文我們将研究表格性能在各種顯示方案下的調優:

我們将從頂部的優化過程中,浏覽如下:檢視ADFM和ADFBC

ADFM

在界面我們使用af:table元件

打開data control面闆,拖拽一個VO到你的頁面上做成一個table.

單擊你最新的那個table然後選擇屬性,進入到behaviorshowdetail

譯 ADF View Object Performance Tuning Analysis

FetchSize定義了 從伺服器一次傳遞給用戶端行的數量,FethcSize預設是與綁定的VO的疊代器的rangeSize是同步的。

為了獲得最佳性能,Oracle建議保持同步表FETCHSIZE和疊代RangeSize,同時 在滿足視圖行數的前提下,rangesize應該盡可能的小。

更多表元件的性能方面的考慮,可以在這裡找到:

table的 rangesize是個傳統的屬性,我們使用者一般不會考慮其值。

打開jspx頁面所對應的pageDefine檔案,選擇需要優化的table所對應的Iterator檢視屬性,RangSize建議等于25

譯 ADF View Object Performance Tuning Analysis

Iterator'sRangeSize屬性定義了從BC層傳到ADFM記錄的行數

當iterator建立時 RangeSize預設被指派25

為了減少伺服器用戶端的互動傳送TABLE的資料,Oracle建議把rangeSize的值設成你的UITABLE充滿整個螢幕時的行數。

ADF BC

在VO中也要做出必要的配置

Open Model project -> select your view object -> General -> Tuning

譯 ADF View Object Performance Tuning Analysis

或者在此VO被引用到某個AM中的單獨調優路徑

Open Model project -> Application Module -> Data Model -> View Object Instances -> Data Model -> select your view object -> press Edit… button -> Tuning

譯 ADF View Object Performance Tuning Analysis

對于您的需求,您可以使用上述任何一種方法,但要記住,在第一種情況下,将配置所有執行個體的應用,而在第二種情況下隻對標明的執行個體将被改變

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條記錄時,試圖滾動現實另一次互動出現的資料時,如下視窗問題會展現愛你在浏覽器中:

譯 ADF View Object Performance Tuning Analysis

在控制台會抛出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:

譯 ADF View Object Performance Tuning Analysis

确定您的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.