Oracle Tips Av Burleson Consulting |
Innenfor disse to optimalisatorene gir Oracle flere optimaliseringsmoduser. En optimaliseringsmodus kan angis for hele databasen, eller den kan angis for en bestemt Oracle-økt. Optimeringsmodusene inkluderer rule, first_rows, all_rows og choose. La oss ta en nærmere titt på hvert av disse målene.
Regelmodus
regeltipset vil ignorere CBO og statistikken og generere en utførelsesplan basert utelukkende på grunnleggende dataordbokinformasjon. Det er alltid lurt å prøve å justere en BESTEMT SQL-setning VED HJELP AV RBO ved hjelp av et regeltips eller ved å utstede alter session set optimizer_goal=rule. Husk imidlertid alltid at RBO kan velge en mindre enn ideell indeks for å betjene en spørring.
Optimizer_mode=velg
velg optimaliseringsmodus lar Oracle velge det mest hensiktsmessige optimaliseringsmålet. Dette er standard optimizer-modus i Oracle, og den bruker vanligvis tilstedeværelsen av statistikk for å bestemme hvilken optimizer som skal påberopes. Hvis det ikke finnes statistikk, Vil Oracle bruke regelmålet. Hvis det finnes statistikk, Vil Oracle velge first_rows eller all_rows, avhengig av tilstedeværelsen av indekser og innstillingen for parallellisme og db_file_multiblock_read_count.
Advarsel: å ha ufullstendig statistikk med velg optimizer-modus kan føre til store forsinkelser. Hvis Oracle oppdager en enkelt tabell i en spørring med statistikk, vil Den bruke kostnadsbasert optimizer, og beregne statistikk for de andre tabellene på kjøretid. Dette kan føre til stor nedgang I SQL-utførelse. Dette problemet er svært vanlig Med Oracle Remote dba beginners fordi standardmodusen er velg, og fordi nybegynner Eksterne Dba noen ganger selektivt utsteder analysekommandoen, ikke innser at DE utfører SQL-utførelsestider.
first_rows-modus
dette er en kostnadsbasert optimaliseringsmodus som returnerer rader så snart som mulig, selv om den totale spørringen kjører lenger eller bruker flere ressurser. First_rows optimizer-modusen innebærer vanligvis å velge en full indeksskanning over en parallell fulltabellskanning. Fordi first_rows-modusen favoriserer indeksskanning over fulltabellskanning, er first_rows-modusen mest hensiktsmessig for elektroniske systemer der sluttbrukeren vil se noen resultater så raskt som mulig.
all_rows-modus
dette er en kostnadsbasert optimaliseringsmodus som sikrer at den totale spørringstiden minimeres, selv om det tar lengre tid å motta den første raden. Dette innebærer vanligvis å velge en parallell full-table scan over en full-index scan. Fordi all_rows-modusen favoriserer full tabellskanninger, er all_rows-modusen best egnet for batchorienterte spørringer der mellomliggende rader ikke kreves for visning.
Hvilken er «bedre»? Rask utførelse vs minimal ressursbruk.
for å forstå oracles filosofi om rask utførelse og minimalt ressursforbruk må vi se på et enkelt eksempel. For å illustrere forskjellen mellom all_rows og first_rows med et overforenklet eksempel, bør du vurdere følgende spørring:
velg
last_name
fra
kunde
order by
last_name;
denne spørringen kan betjenes på to måter:
-
Full-table scan – her utfører vi en full-table scan parallelt og sortere radene I TEMP tabellplass. For illustrasjonens skyld, la oss anta at denne utførelsesplanen gir den raskeste samlede utførelsestiden og minimal ressursbruk (Figur 2).
Figur 2: Utfør en full tabellskanning og en sortering (all_rows)
-
Full Indeksskanning – her henter vi radene i last_name rekkefølge ved å bruke en last_name_index. Denne teknikken resulterer i mer fysisk lesing, men begynner å returnere sorterte rader nesten umiddelbart (Figur 3).
Figur 3: Utfør en indekshenting (first_rows)
Igjen, forutsatt at vi godtar fulltabellskanning og sortering er mindre i / O-intensiv enn full-indeksskanning, så kan vi tydelig se forskjellen i optimaliseringsmålene. Full-index scan vil begynne å returnere rader nesten umiddelbart på bekostning av ekstra I / O, mens full-table scan vil kreve mindre ressurser, men resultatsettet vil ikke være tilgjengelig før slutten av spørringen.
Dette er et utdrag fra «Oracle High-Performance SQL Tuning» Av Donald K. Burleson, utgitt Av Oracle Press.