減少對擷取時間的動態計算影響

除非成員包含複雜公式,否則在您動態計算密集維度成員時的擷取時間增加並不重要。當您將稀疏維度的成員標記為動態計算時,擷取時間的增加可能非常重要。

您可以分析和管理 Essbase 資料庫上動態計算成員的影響,方法是注意擷取係數、擷取緩衝區大小和計算機快取。

附註:

如需對查詢擷取有最大影響之函式的清單,請參閱成員集函式與效能

顯示擷取因子

為了協助您預估任何擷取時間的增加, Essbase 會在您儲存大綱時計算資料庫大綱的擷取係數。Essbase 會根據要計算之 Essbase 最昂貴的動態計算資料區塊來計算此擷取係數。擷取因子只會考慮聚總。它不會考量公式的擷取影響。

擷取係數是 Essbase 必須從磁碟或資料庫擷取以計算最昂貴區塊的資料區塊數目。如果資料庫只有密集維度中有動態計算成員 (稀疏維度中沒有動態計算成員),則擷取係數為 1。

具有高擷取係數 (例如,大於 2000) 的大綱可能會在使用者擷取資料時造成長時間的延遲。不過,對擷取時間的實際影響也取決於使用者擷取的動態計算資料值數目。擷取係數僅為指標。在某些應用程式中,使用動態計算成員可能會縮短擷取時間,因為資料庫大小和索引大小會縮短。

Essbase 會在應用程式日誌中顯示擷取係數值。

與此範例類似的訊息表示擷取因子:


Essbase needs to retrieve [1] Essbase kernel blocks in order
to calculate the top dynamically-calculated block.

此訊息告訴您 Essbase 需要擷取一個區塊,以計算最昂貴的動態計算資料區塊。

增加擷取緩衝區大小

當使用者從 Smart View 、MDX 或報表寫入器查詢時, Essbase 會使用擷取緩衝區來最佳化查詢。增加擷取緩衝區大小可以改善查詢效能,因為 Essbase 可以同時處理較大的資料區段。

依照預設,擷取緩衝區大小為 20 KB。不過,如果將擷取緩衝區大小設成大於 20 KB,則可以加快擷取時間。

若要增加擷取緩衝區大小,您可以使用 MaxL alter database 敘述句。舉例而言:

alter database Sample.Basic set retrieve_buffer_size 20kb;

或者,您也可以使用 Essbase Web 介面變更資料庫自訂設定中的緩衝區大小。

使用動態計算機快取

依預設,當 Essbase 計算密集維度 (例如,針對查詢) 中的動態計算成員時,會將計算所需的所有區塊寫入記憶體中的一個區域,稱為動態計算器快取。當 Essbase 將這些區塊寫入動態計算器快取中時,會展開這些區塊,以將所有動態計算成員納入密集維度中。

如果查詢在密集維度中包含雙輪計算成員,則查詢需要為每個擷取的區塊提供一個動態計算器快取。

使用 Essbase 動態計算器快取可集中控制動態計算的記憶體使用狀況。在動態計算器快取中管理資料區塊,也能減少整體記憶體空間需求,並減少對作業系統進行記憶體配置的呼叫次數以提升效能。

附註:

動態計算器快取和計算器快取使用不同的方法來最佳化計算效能。

另請參閱:調整動態計算器快取大小調整計算器快取大小

複查動態計算器快取使用狀況

Essbase 會將兩個訊息寫入應用程式日誌,以供每次擷取資料。在下列範例中,第一個訊息說明擷取所需的總時間:


Regular Extractor Elapsed Time : [0.531] seconds
Regular Extractor Big Blocks Allocs -- Dyn.Calc.Cache : [30] non-Dyn.Calc.Cache : [0]

如果使用動態計算器快取,則第二個訊息會顯示資料計算器快取 (Dyn.Calc.Cache:[n]) 中計算的區塊數,以及動態計算器快取 (non-Dyn.Calc.Cache:[n]) 之外的記憶體中計算的區塊數。

若要判斷動態計算器快取是否有效使用,請複查訊息並考量您的組態設定。例如,如果訊息指出區塊是在動態計算機快取外進行計算,您可以增加 DYNCALCCACHEMAXSIZE 設定。

如果指定的大小上限是您可以為伺服器上的所有動態計算機快取負擔的,而且如果在計算機快取外使用記憶體來完成動態計算的擷取,就會導致無法接受的延遲 (例如,因為交換或分頁活動),請將 DYNCALCCACHEWAITFORBLK 設為 TRUE。

您可以使用查詢資料庫 MaxL 敘述句和效能統計資料文法來檢視動態計算器快取活動的摘要。