Utrzymywanie bloków inicjalizacyjnych

Podczas korzystania z Data Gateway lub Remote Data Connector wraz z Oracle Analytics następuje niewielkie wydłużenie czasu wykonywania poszczególnych zapytań.

Użytkownik nie zauważy dodatkowego czasu trwania podczas uruchamiania raportu, ponieważ jest on krótszy niż 0,3 sekundy. Mogą jednak wystąpić problemy z wydajnością w przypadku uruchamiania wielu bloków inicjalizacyjnych (liczba zależy od wymagań dotyczących wydajności) za każdym razem, gdy ktoś się loguje, ponieważ zapytania bloku inicjalizacyjnego są wykonywane szeregowo. W tym temacie przedstawiono zalecane metody zmniejszania liczby bloków inicjalizacyjnych sesji.

Użycie opcji odroczonej na potrzeby bloków inicjalizacyjnych nie rozwiązuje problemu, ponieważ bloki te są wykonywane po otwarciu pierwszej strony pulpitu informacyjnego.

Jest to problem w przypadku korzystania z Oracle BI Applications, ponieważ uruchamianych jest ponad 200 bloków inicjalizacyjnych. W przypadku Oracle Analytics Cloud najlepszym sposobem na uniknięcie tych problemów z wydajnością jest zmniejszenie liczby bloków inicjalizacyjnych.

Oracle zaleca następujące metody, dzięki którym można ograniczyć liczbę bloków inicjalizacyjnych sesji:

  • Wyłączenie wszystkich bloków inicjalizacyjnych, których użytkownik nie potrzebuje.

    Na przykład w Oracle BI Applications należy wyłączyć bloki inicjalizacyjne, które odwołują się do nieużywanych już modułów Oracle BI Applications.

  • Z wyjątkiem sytuacji, gdy istnieje reguła pierwszeństwa, należy scalić wszystkie bloki inicjalizacyjne row_wise, w których używana jest ta sama pula połączeń i które zwracają dane tego samego typu, używając instrukcji UNION ALL między ich zapytaniami.

    Na przykład:

    Init block 1: query1
    
    Init block 2: query2
    
    Merged init block: query1 union all query2
  • Należy wyłączyć wszystkie bloki inicjalizacyjne, które powodują wybranie wartości zakodowanej sprzętowo z dual lub W_DUAL_G, i umieścić wartość zakodowaną sprzętowo w domyślnym inicjalizatorze odpowiedniej zmiennej.
  • Należy scalić pozostałe bloki inicjalizacyjne, które powodują wybór danych z instrukcji podwójnej, w pojedynczą instrukcję select.
  • W przypadku klientów Oracle BI Applications należy wyłączyć wszystkie bloki inicjalizacyjne używane do pobierania nazw i wartości atrybutów niestandardowych Oracle Human Capital Management, jeśli odpowiedni atrybut nie jest używany (jeśli standardowa wartość domyślna HIDE jest wartością bieżącą dla tych zmiennych) lub jeśli użytkownik nie wykorzystuje Oracle Human Capital Management jako źródła danych Oracle BI Applications (w Oracle BI Applications istnieje 100 takich bloków inicjalizacyjnych):
    HR xxx Attribute yyy
  • Należy scalić wszystkie pozostałe bloki inicjalizacyjne, które nie mają atrybutu row_wise i w których używana jest ta sama pula połączeń. Na przykład:

    Blok inicjalizacyjny 1 opiera się na zapytaniu 1: select colA from tableA where….

    Blok inicjalizacyjny 2 opiera się na zapytaniu 2: select colB from tableB where….

    Można je scalić w jeden blok inicjalizacyjny za pomocą następującego zapytania:

    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

    Można utworzyć dowolną liczbę złączeń wymaganych do pobrania wszystkich zmiennych z tej samej puli połączeń w pojedynczym zapytaniu.

    Takie rozwiązanie nie jest łatwe do zaimplementowania i obsługi, a ponadto istnieje ryzyko popełnienia błędów podczas tworzenia zapytań i przypisywania wszystkich zmiennych do pojedynczego bloku inicjalizacyjnego.

Dzięki starannej implementacji i obsłudze zapytań i zmiennych bloku inicjalizacyjnego można znacznie skrócić czas potrzebny na zalogowanie się i wyświetlenie pierwszej strony pulpitu informacyjnego.