2013-10-30 51 views
1

由於您不需要將文檔「部分」發送到客戶端,因此在迭代FileNet集合時,構建一些服務器端報表以使用簡單迭代器而不是PageIterator時很常見。如何爲IBM FileNet搜索優化頁面大小

SearchScope ss = new SearchScope(objectStore); 

//what integer to choose? 
int pageSize; 

RepositoryRowSet rrc = ss.fetchRows(sql, pageSize, propertyFilter, true); 
    Iterator it = rrc.iterator(); 
      while (it.hasNext()) { 

       RepositoryRow rr = (RepositoryRow) it.next(); 
       //... 
      } 

但CE API仍然在裏面使用分頁。所以我的問題是:在這種情況下選擇什麼頁面大小?一方面,頁面大小越多,往返服務器的次數就越少。另一方面,我們不能放大太多,因爲每個定期的請求可能會變得太大而且太慢,並且可能導致性能下降。金的意思在哪裏?

回答

3

這裏沒有什麼黃金的意思,因爲它是三個因素之間的折中:CE返回結果的速度有多快,有多少次往返,以及客戶端和服務器上的內存消耗。正如您可能瞭解的,這些很大程度上取決於您的操作環境。

你可以考慮影響查詢性能的東西合理,是一種基線的默認配置參數:

ServerCacheCofiguration.QueryPageMaxSize:1000 ServerCacheCofiguration.QueryPageDefaultSize:500 ServerCacheCofiguration.NonPagedQueryMaxSize:5000

一個好的方法將被填充您的測試對象將存儲相應數量的對象並使用查詢參數進行播放。

+0

所以更好的選擇可能是將pageSize參數設置爲null。這將有助於根據不同的環境調整不同的頁面大小。我是否正確? – sermolaev

+0

這是有道理的。如果需要,它可以覆蓋特定查詢的默認值。 – fnt

+0

好吧,還有一件事要記住:當增加頁面大小時,最終會出現事務超時問題。 – sermolaev