Innholdsfortegnelse:
Video: Cloud Computing - Computer Science for Business Leaders 2016 2025
Oracle 12c's bufferbufferbuffer er vanligvis den største delen av SGA. Den har data som kommer fra filene på disken. Fordi tilgang til data fra disken er tregere enn fra minnet, er buffertbufferdatabaseens eneste formål å cache dataene i minnet for raskere tilgang.
Databasebuffertbufferen kan inneholde data fra alle typer objekter:
-
Tabeller
-
Indekser
-
Materialiserte visninger
-
Systemdata
I uttrykket databasebufferbufferen refererer termen buffer til databaser. En databaseblokk er den minste mengden lagring som Oracle leser eller skriver. Alle lagringssegmenter som inneholder data, består av blokker. Når du ber om data fra disk, leser minst Oracle en blokk.
Selv om du ber om bare én rad, vil det trolig bli hentet mange rader i samme tabell. Det samme gjelder hvis du ber om en kolonne i en rad. Oracle leser hele blokken, som mest sannsynlig har mange rader, og alle kolonnene for den raden.
Det er mulig å tenke at hvis avdelingsbordet ditt bare har ti rader, kan hele tingen leses inn i minnet selv om du ber om navnet på bare en avdeling.
Buffertbuffertstatus i Oracle 12c
Bufferen cache styrer hvilke blokker som skal bli, avhengig av ledig plass og blokkeringsstatus (som hvordan det felles bassenget bestemmer hva SQL skal bli). Buffertbufferen bruker sin egen versjon av LRU-algoritmen.
Gratis:
-
Brukes for øyeblikket ikke til noe Pinned:
-
For øyeblikket tilgjengelig > Dirty: Blokken er endret, men ikke skrevet til disk
-
Gratis blokker Ideelt sett er gratis blokker tilgjengelig når du trenger dem. Men det er sannsynligvis ikke tilfelle med mindre databasen er så liten at hele greien kan passe i minnet.
LRU-algoritmen virker litt annerledes i bufferbufferen enn den gjør i det felles bassenget. Det scorer hver blokk og deretter ganger hvor lang tid det har vært siden det ble åpnet. For eksempel får en blokk et poeng hver gang det berøres.
Jo høyere poengene er, jo mindre sannsynlig blir blokken skyllet fra minnet. Det må imidlertid nås ofte, eller poengsummen minker. En blokk må jobbe hardt for å holde seg i minnet hvis konkurransen om minnesressurser er høy.
Å gi hver blokk en score og tid hindrer at denne typen situasjon oppstår: En blokk åpnes tungt i slutten av måneden for rapporter.Resultatet er høyere enn noen annen blokk i systemet. Denne blokken er aldri tilgjengelig igjen.
Det sitter der å kaste bort minne til databasen er startet på nytt eller en annen blokk til slutt viser nok poeng til å slå den ut. Tidskomponenten aldrer det veldig fort etter at du ikke lenger har tilgang til det.
Pinned blocks
En blokk som nå er tilgjengelig, er en
festet blokk.
Blokken er låst (eller festet) i bufferbufferen, slik at den ikke kan bli alderen ut av bufferbufferen mens Oracle-prosessen (ofte representerer en bruker) får tilgang til den. Skitne blokker En endret blokk er en
skitten blokk.
For å sikre at endringene dine holdes på tvers av databasestopp, må disse skitne blokkene skrives fra bufferbufferen til disken. Databasen heter skitne blokker i en skitten liste eller skrivekø. Det kan hende du tror at hver gang en blokk endres, skal den skrives til disk for å minimere tapte data. Dette er ikke tilfelle - ikke engang når det er en commit
(når du lagrer endringene permanent)! Flere strukturer bidrar til å forhindre tapte data. Videre har Oracle et gambling problem. Systemytelsen ville krype hvis du skrev blokker til disk for hver modifikasjon. For å bekjempe dette, spiller Oracle oddsen om at databasen er usannsynlig å mislykkes og skriver blokker til disk bare i større grupper. Ikke bekymre deg; det er ikke engang en risiko mot tapte data. Oracle får ytelse ut av databasen
akkurat nå
på den mulige bekostning av en gjenoppretting som tar lengre tid senere. Fordi feil på ordentlig styrte systemer sjelden forekommer, er det en billig måte å få litt ytelse på. Det er imidlertid ikke som om Oracle etterlater skitne blokker uten å rydde opp etter seg selv. Blokker skrive utløsere i Oracle 12c Hva utløser en blokkskrivning og derfor en skitten blokk?
Databasen er utstedt en avslutningskommando.
Det oppstår et fullstendig eller delvis kontrollpunkt - det vil si når systemet periodisk dumper alle de skitne bufferne til disken.
-
En grense for gjenopprettingstid, sett av deg, er oppfylt; Totalt antall skitne blokker gir en uakseptabel gjenopprettingstid.
-
En ledig blokk er nødvendig, og ingen er funnet etter en gitt søkemengde.
-
Visse kommandoer for datadefinisjonsspråk (DDL). (DDL-kommandoer er SQL-setninger som definerer objekter i en database.)
-
Hvert tredje sekund.
-
Andre grunner. Algoritmen er kompleks, og du kan ikke være sikker på alle endringene som skjer ved hver programvareutgivelse.
-
Faktum er at databasen forblir ganske opptatt skriveblokker i et miljø der det er mange endringer.