Optimere ydeevnen for forespørgsler til relationsdatabaser

Mange kunder oplever problemer med ydeevnen, når de bruger data warehouse-applikationer. I nogle tilfælde er de SQL-forespørgsler, der genereres af Oracle Analytics, for komplekse at analysere. Dette emne omfatter nogle retningslinjer for, hvordan problemer med ydeevnen, der kan stamme fra de SQL-forespørgsler, som genereres af Oracle Analytics, kan analyseres og minimeres.

Dette emne dækker ikke problemer med ydeevnen, der skyldes problemer med dit netværk, din browser eller rapportpræsentation.

Analysere forespørgselsloggen for Oracle Analytics (logniveau 3 påkrævet)

Se Gather and Analyze Query Logs. for at få oplysninger om, hvordan du finder denne log eller forstår indholdet

  1. Sammenlign den tid, din forespørgsel bruger i Oracle Analytics, med den tid, der bruges i databasen, det vil sige responstid versus varighed af fysisk forespørgsel. Normalt bruges der kun nogle få sekunder i Oracle Analytics.
  2. Hvis responstiden er mere end nogle få sekunder, kan du analysere de individuelle trin, der udføres i Oracle Analytics, for at finde årsagen (logniveau 5 påkrævet).

Analysere den fysiske SQL-forespørgsel

  1. Tjek, om alle de tabeller, der er inkluderet i forespørgslen, er nødvendige. Kig efter tabeller, der er sammenkædet, men ikke inkluderet i SELECT-klausulen og ikke har nogen filtre anvendt (rigtige filtre, ikke sammenkædningsbetingelser).
  2. Identificer, hvor mange fysiske forespørgsler og underforespørgsler der er genereret. Det vil mere præcist sige, hvor mange gange forespørgslen læser en faktatabel. I en perfekt verden læser forespørgslen kun én enkelt faktatabel, og kun én gang. Når der er mere end én faktatabel, skal du finde ud af hvorfor og se, om du kan fjerne nogle.
  3. Tjek, om der er ekskluderede kolonner, ikke-additive aggregeringsregler (REPORT_AGGREGATE, count(distinct)...), valgtrin, underforespørgsel i rapporten, sætoperatorer (UNION), totaler, subtotaler, flere visninger osv.
  4. Tjek, om der er ydre sammenkædninger. Se, hvor de stammer fra, og om du kan fjerne nogle af dem ved at ændre designet.

Analysere udførelsesplanen

Hvis det ikke er tilstrækkeligt at optimere SQL'en, kan du analysere udførelsesplanen for at finde rodårsagen til problemet med ydeevnen. Bed din databaseadministrator (DBA) om at hjælpe dig. Du kan forbedre ydeevnen på fire primære måder i denne situation:
  1. Reducer mængden af input-output-kald ved at forbedre dataadgangsstier (indekser).
  2. Reducer mængden af input-output-kald ved at reducere mængden af læste data. Du kan for eksempel gennemgå de filtre, der anvendes på datamodelstrukturen (se det næste afsnit).
  3. Øg parallelismen (antal tråde, der bruges til at læse store tabeller).
  4. Øg hastigheden af input-output-kald (forbedringer af infrastruktur, database i hukommelsen osv.).

Gennemgå og forbedr datamodellen for at reducere mængden af læste data

  1. Opret aggregerede tabeller.
  2. Brug fragmentering.

    Hvis brugeren for eksempel især vælger data fra indeværende år, kvartal eller måned, kan du opdele fakta i to tabeller: indeværende og arkiv. Du kan også bruge partitionering på Oracle-databasen.

  3. Brug denormalisering for at reducere antallet af sammenkædninger.
  4. Opdel tabeller for at reducere antallet af kolonner.

    Mængden af læste data afhænger ikke kun af antallet af rækker i hver tabel. Tabelomfanget afhænger også af antallet og størrelsen af dens kolonner. Du kan for eksempel opdele en stor tabel med 500 kolonner i to tabeller: én tabel med de 50 hyppigst brugte kolonner og den anden med de resterende 450 kolonner, der sjældent bruges.

Mange problemer med ydeevnen i Oracle Analytics stammer fra dårligt design, da dette bevirker, at der genereres ikke-optimale SQL-forespørgsler. Ved at modificere designet kan du forbedre de SQL-forespørgsler, som Oracle Analytics genererer. Dette kan have en enorm virkning både på dine rapporters ydeevne og den mængde ressourcer, der bruges i databasen.