初始化區塊維護

如果您在 Oracle Analytics Cloud 使用資料閘道或遠端資料連線器,每次執行查詢時的持續時間都會稍微增加。

您在執行報表時並不會注意到持續時間增加,因為增加的時間不到 0.3 秒。不過,若您在有使用者登入時執行大量 (此數量取決於您的效能需求) 的初始化區塊,可能就會發生效能問題,因為初始化區塊查詢是以循序方式執行。對初始化區塊使用延緩選項並無法解決此問題,因為初始化區塊會在您開啟第一個儀表板頁面時執行。

如果您使用 Oracle BI Applications,這也是一個問題,因為它會執行超過兩百個初始化區塊。對於 Oracle Analytics Cloud,避免這些效能問題的最佳方式就是減少初始化區塊的數量。

下列是如何減少階段作業初始化區塊數目的建議:

  • 停用所有不需要的初始化區塊。

    例如,在 Oracle BI Applications 中,請停用與不再使用之 Oracle BI Applications 模組有關的初始化區塊。

  • 將使用相同連線集區的所有 row_wise 初始化區塊合併,並且在它們的查詢之間使用 UNION ALL 以傳回相同的資料類型,但若有優先順序規則則除外。

    例如:

    Init block 1: query1
    
    Init block 2: query2
    
    Merged init block: query1 union all query2
  • 停用從 dualW_DUAL_G 選取硬式編碼值的所有初始化區塊,並且將硬式編碼值放到相應變數的預設初始設定元中。
  • 將從 dual 選取資料的其餘初始化區塊合併成單一 select 敘述句。
  • 對於 Oracle BI Applications 客戶,若未使用相應的屬性,請停用用於擷取 Oracle Human Capital Management 自訂屬性名稱和值的所有初始化區塊。(這些變數目前的值如果是標準預設值 ‘HIDE’) 或如果您未使用 Oracle Human Capital Management 作為 Oracle BI Applications 資料來源 (Oracle BI Applications 有一百個類似這樣的初始化區塊):
    HR xxx Attribute yyy
  • 合併不是 row_wise 且使用相同連線集區的所有其餘初始化區塊。例如:

    初始化區塊 1 以查詢 1 為依據:select colA from tableA where…

    初始化區塊 2 以查詢 2 為依據:select colB from tableB where…

    您可以使用類似以下的查詢,將它們合併成單一初始化區塊:

    Select MAX(colA), MAX(colB) from (
    
    select cola as cola, null as colB from tableA where….
    
    Union all
    
    Select null, colB from tableB where…) tmp

您可以視需要執行無限個聯集,使用單一個查詢從相同的連線集區擷取所有變數。

這在實行或維護上並不容易,而且在建立查詢並將所有變數指定至單一初始化區塊時,還要冒著出錯的風險。如果您小心實行並維護初始化區塊查詢和變數,將可大幅縮減登入及顯示第一個儀表板頁面的時間。