Justere ytelsen for relasjonsdatabasespørringer

Mange kunder opplever problemer med ytelsen når de bruker datavarehusapplikasjoner. I enkelte tilfeller er SQL-spørringene som genereres i Oracle Analytics, for kompliserte til at de kan analyseres. Dette emnet inneholder noen retningslinjer for hvordan du analyserer og minimerer ytelsesproblemer som kan stamme fra SQL-spørringene generert av Oracle Analytics.

Dette emnet dekker ikke svekket ytelse som skyldes problemer med nettverket, nettleseren eller rapportpresentasjonen.

Analysere spørringsloggen for Oracle Analytics (loggnivå 3 er nødvendig)

Hvis du vil ha opplysninger om hvordan du finner denne loggen eller forstår innholdet i den, kan du se Samle og analysere spørringslogger.

  1. Sammenlign tiden spørringen bruker i Oracle Analytics, med tiden som brukes i databasen, altså svartid kontra fysisk spørringsvarighet. Tiden som brukes i Oracle Analytics, er vanligvis ikke mer enn noen få sekunder.
  2. Hvis svartiden er mer enn noen få sekunder, analyserer du enkelttrinnene i Oracle Analytics for å finne årsaken (loggnivå 5 er nødvendig).

Analysere den fysiske SQL-spørringen

  1. Kontroller om alle tabellene som er inkludert i spørringen, er nødvendige. Se etter eventuelle tabeller som er sammenføyd, men ikke inkludert i leddet SELECT, og som ikke har noen brukte filtre (ekte filtre, ikke betingelser for sammenføyning).
  2. Identifiser hvor mange fysiske spørringer og delspørringer som genereres. Nærmere bestemt: Hvor mange ganger leser spørringen en faktatabell? I en perfekt verden leser spørringen én faktatabell, og bare én gang. Når det finnes flere faktatabeller, må du finne ut hvorfor og se om du kan fjerne noen.
  3. Se etter utelatte kolonner, ikke-additive aggregeringsregler (REPORT_AGGREGATE, count(distinct)...), utvalgstrinn, en delspørring i rapporten, angitte operatorer (UNION), summer, delsummer, flere visninger og så videre.
  4. Se etter eventuelle ytre sammenføyninger. Finn ut hvor de kommer fra, og om du kan fjerne noen ved å endre utformingen.

Analysere utførelsesplanen

Hvis det ikke er nok å optimalisere SQL-spørringen, analyserer du utførelsesplanen for å finne rotårsaken til ytelsesproblemet. Be databaseadministratoren (DBA) om hjelp. På dette tidspunktet finnes det fire hovedmåter å forbedre ytelsen på:
  1. Reduser volumet av inndata/utdata-kall ved å forbedre datatilgangsbaner (indekser).
  2. Reduser volumet av inndata/utdata-kall ved å redusere datalesingsvolumet. Du kan for eksempel se gjennom filtrene som er brukt, eller datamodellstrukturen (se neste del).
  3. Øk parallelliteten(antallet tråder som brukes til å lese store tabeller).
  4. Forbedre volumet av inndata/utdata-kall (forbedringer av infrastrukturen, databasen i minnet og så videre).

Se gjennom og forbedre datamodellen for å redusere datalesingsvolumet

  1. Opprett aggregerte tabeller.
  2. Bruk fragmentering.

    Hvis brukerne for eksempel stort sett velger data fra inneværende år, kvartal eller måned, kan du dele faktaene inn i to tabeller: inneværende og arkiverte. Du kan også bruke partisjonering i Oracle-databasen.

  3. Bruk denormalisering for å redusere antallet sammenføyninger.
  4. Del opp tabeller for å redusere antallet kolonner.

    Volumet i datalesingen er ikke bare avhengig av antallet rader i hver enkelt tabell. Tabellvolumet avhenger også av antallet og størrelsene på kolonnene. Du kan for eksempel dele opp en stor tabell med 500 kolonner i to tabeller: den ene tabellen med de 50 kolonnene som brukes oftest, og den andre med de gjenstående 450 kolonnene som sjelden brukes.

Mange ytelsesproblemer i Oracle Analytics skyldes dårlig utforming, ettersom dette fører til generering av SQL-spørringer som ikke er optimale. Hvis du endrer utformingen, kan du forbedre SQL-spørringene som genereres i Oracle Analytics. Dette kan ha stor innvirkning både på ytelsen i rapportene og mengden ressurser som brukes i databasen.