Optimizarea performanţei interogărilor bazei de date relaţionale

Mulţi clienţi întâmpină probleme de performanţă ale aplicaţiilor data warehouse. În unele cazuri, analiza interogărilor SQL generate de Oracle Analytics este complexă. Acest subiect oferă câteva instrucţiuni pentru analiza şi minimizarea problemelor de performanţă cauzate de interogările SQL generate de Oracle Analytics.

Acest subiect nu acoperă problemele de performanţă cauzate de problemele la reţeaua, browserul sau prezentarea raportului dvs.

Analiza jurnalului de interogări pentru Oracle Analytics (este obligatoriu nivelul de jurnal 3)

Pentru informaţii pentru a găsi acest jurnal sau pentru a înţelege conţinutul, consultaţi Colectarea şi analiza jurnalelor de interogări.

  1. Comparaţi durata pe care interogarea dvs. o petrece în Oracle Analytics cu durata petrecută în baza de date, adică, durata de răspuns versus durata interogării fizice. În mod normal, durata petrecută în Oracle Analytics nu depăşeşte câteva secunde.
  2. Dacă durata de răspuns depăşeşte câteva secunde, analizaţi paşii individuali parcurşi în Oracle Analytics pentru a descoperi cauza (este obligatoriu nivelul de jurnal 5).

Analiza interogării SQL fizice

  1. Verificaţi dacă toate tabelele incluse în interogare sunt necesare. Verificaţi dacă există tabele reunite, dar care nu sunt incluse în clauza SELECT şi care nu au filtre aplicate (filtre reale, nu condiţii de join).
  2. Identificaţi câte interogări fizice şi subinterogări sunt generate. Mai exact, de câte ori citeşte interogarea un tabel de fapte? Într-o lume ideală, interogarea citeşte un singur tabel de fapte, o singură dată. Atunci când există mai multe tabele de fapte, descoperiţi motivele şi dacă puteţi elimina câteva dintre acestea.
  3. Verificaţi coloanele excluse, regulile de agregare care nu sunt aditive (REPORT_AGGREGATE, count(distinct)...), paşii de selecţie, o subinterogare din raport, operatorii setaţi (UNION), totalurile, subtotalurile, vizualizările multiple etc.
  4. Verificaţi dacă există joinuri externe. Descoperiţi de unde provin acestea şi dacă puteţi elimina câteva prin modificarea designului.

Analiza planului de execuţie

Dacă optimizarea interogării SQL nu este suficientă, analizaţi planul de execuţie pentru a descoperi cauza principală a problemei de performanţă. Solicitaţi ajutorul administratorului bazei de date (DBA). Există patru modalităţi principale de a îmbunătăţi performanţa în acest punct:
  1. Reduceţi volumul apelurilor de intrare-ieşire prin îmbunătăţirea căilor de acces la date (indexări).
  2. Reduceţi volumul apelurilor de intrare-ieşire prin reducerea volumului de date citite. De exemplu, puteţi examina filtrele aplicate sau structura modelului de date (consultaţi secţiunea următoare).
  3. Creşteţi paralelismul (numărul de fire folosite pentru citirea tabelelor mari).
  4. Îmbunătăţiţi viteza apelurilor de intrare-ieşire (îmbunătăţiri ale infrastructurii, bază de date in-memory etc.).

Examinarea şi îmbunătăţirea modelului de date pentru a reduce volumul de date citite

  1. Creaţi tabele agregate.
  2. Utilizaţi fragmentarea.

    De exemplu, dacă utilizatorii folosesc, de obicei, date din anul, trimestrul sau luna curentă, puteţi împărţi tabelul de fapte în două tabele: cel curent şi o arhivă. Pentru baza de date Oracle, puteţi utiliza, de asemenea, partiţionarea.

  3. Utilizaţi denormalizarea pentru a reduce numărul de joinuri.
  4. Împărţiţi tabelele pentru a reduce numărul de coloane.

    Volumul de date citite nu depinde numai de numărul de rânduri din fiecare tabel. Volumul tabelului depinde şi de numărul şi dimensiunea coloanelor sale. De exemplu, puteţi împărţi un tabel mare cu 500 de coloane în două tabele; un tabel cu primele 50 de coloane în funcţie de frecvenţa utilizării şi altul cu celelalte 450 de coloane rămase, care sunt utilizate rar.

Multe probleme de performanţă ale Oracle Analytics sunt cauzate de designul nesatisfăcător, care generează interogări SQL sub parametrii optimi. Prin modificarea designului, puteţi îmbunătăţi interogările SQL pe care le generează Oracle Analytics. Acest lucru poate avea un impact semnificativ nu doar asupra performanţei rapoartelor dvs., ci şi asupra cantităţii de resurse utilizate în baza de date.