Inhaltsverzeichnis:
Video: Recht 1 - Vodcast 1: Grundlagen des Rechts 2024
Der Datenbankpuffercache von Oracle 12c ist normalerweise der größte Teil des SGA. Es hat Daten, die von den Dateien auf der Festplatte stammen. Da der Zugriff auf Daten von der Festplatte langsamer als aus dem Speicher erfolgt, dient der Cache des Datenbankpuffers ausschließlich dem Zwischenspeichern der Daten im Speicher für einen schnelleren Zugriff. Der Datenbankpuffercache kann Daten von allen Objekttypen enthalten:
Tabellen
-
Indizes
-
-
Systemdaten
-
Im Begriff
Datenbankpuffer-Cache bezieht sich der Begriff Puffer auf Datenbankblöcke. Ein Datenbankblock ist die minimale Speichermenge, die Oracle liest oder schreibt. Alle Speichersegmente, die Daten enthalten, bestehen aus Blöcken. Wenn Sie Daten von der Festplatte anfordern, liest Oracle mindestens einen Block. Selbst wenn Sie nur eine Zeile anfordern, werden wahrscheinlich viele Zeilen in derselben Tabelle abgerufen. Das Gleiche gilt, wenn Sie eine Spalte in einer Zeile anfordern. Oracle liest den gesamten Block, der höchstwahrscheinlich viele Zeilen enthält, und alle Spalten für diese Zeile.
Puffer-Cache-Status in Oracle 12c
Der
Puffer-Cache steuert, welche Blöcke erhalten bleiben, abhängig vom verfügbaren Platz und dem Blockstatus (ähnlich wie der gemeinsam genutzte Pool entscheidet, welche SQL bleiben soll). Der Puffercache verwendet seine eigene Version des LRU-Algorithmus.
Frei:
-
Wird für nichts verwendet Angepasst:
-
Wird gerade aufgerufen > Dirty: Block wurde modifiziert, aber noch nicht auf die Festplatte geschrieben
-
Freie Blöcke Idealerweise sind freie Blöcke verfügbar, wann immer sie benötigt werden. Das ist jedoch wahrscheinlich nicht der Fall, es sei denn, Ihre Datenbank ist so klein, dass das Ganze in den Speicher passt.
Der LRU-Algorithmus funktioniert im Puffer-Cache etwas anders als im freigegebenen Pool. Es punktet jeden Block und dann mal, wie lange es seit dem Zugriff war. Zum Beispiel erhält ein Block jedes Mal einen Punkt, wenn er berührt wird.
Je höher die Punkte, desto unwahrscheinlicher wird der Block aus dem Speicher gelöscht. Es muss jedoch häufig darauf zugegriffen werden oder die Punktzahl sinkt. Ein Block muss hart arbeiten, um im Gedächtnis zu bleiben, wenn die Konkurrenz um Speicherressourcen hoch ist.
Indem jedem Block eine Punktzahl und Zeit gegeben wird, wird verhindert, dass diese Art von Situation auftritt: Ein Block wird am Ende des Monats für Berichte schwer zugänglich gemacht.Seine Punktzahl ist höher als bei jedem anderen Block im System. Auf diesen Block wird nie wieder zugegriffen.
Es sitzt da, dass Speicher verschwendet wird, bis die Datenbank neu gestartet wird oder ein anderer Block schließlich genug Punkte bekommt, um ihn zu eliminieren. Die Zeitkomponente veraltet sehr schnell, nachdem Sie nicht mehr darauf zugreifen.
Angepasste Blöcke
Ein Block, auf den gerade zugegriffen wird, ist ein
gepinnter Block.
Der Block ist in den Puffercache gesperrt (oder gepinnt), sodass er nicht aus dem Puffercache gealtert werden kann, während der Oracle-Prozess (der häufig einen Benutzer darstellt) darauf zugreift. Dirty blocks Ein modifizierter Block ist ein
Dirty Block.
Um sicherzustellen, dass Ihre Änderungen bei Datenbank-Shutdowns beibehalten werden, müssen diese Dirty Blocks aus dem Puffercache auf die Festplatte geschrieben werden. Die Datenbank benennt verunreinigte Blöcke in einer Dirty-Liste oder einer Warteschlange. Sie könnten denken, dass jedes Mal, wenn ein Block geändert wird, dieser auf die Festplatte geschrieben werden sollte, um verlorene Daten zu minimieren. Das ist nicht der Fall - auch nicht, wenn commit
ist (wenn Sie Ihre Änderungen dauerhaft speichern)! Mehrere Strukturen helfen, verlorene Daten zu vermeiden. Außerdem hat Oracle ein Glücksspielproblem. Die Systemleistung würde crawlen, wenn Sie für jede Änderung Blöcke auf die Festplatte geschrieben haben. Um dies zu verhindern, spielt Oracle die Wahrscheinlichkeit, dass die Datenbank wahrscheinlich nicht ausfällt, und schreibt Blöcke nur in größeren Gruppen auf die Festplatte. Mach dir keine Sorgen; Es ist nicht einmal ein Risiko gegen verlorene Daten. Oracle erhält jetzt Leistung aus der Datenbank
jetzt
mit den möglichen Kosten einer Wiederherstellung, die länger als später dauert. Da Fehler auf ordnungsgemäß verwalteten Systemen selten auftreten, ist dies eine kostengünstige Möglichkeit, etwas Leistung zu erzielen. Es ist jedoch nicht so, dass Oracle schmutzige Blöcke überall hinterlässt, ohne sich selbst aufzuräumen. Blockschreibauslöser in Oracle 12c Was löst einen Blockschreibvorgang und damit einen Dirty-Block aus?
Der Datenbank wird ein Befehl zum Herunterfahren erteilt.
Ein vollständiger oder teilweiser Prüfpunkt tritt auf - das ist der Zeitpunkt, an dem das System alle beschädigten Puffer regelmäßig auf die Festplatte schreibt.
-
Ein von Ihnen festgelegter Wiederherstellungszeit-Schwellenwert ist erfüllt. die Gesamtanzahl der verschmutzten Blöcke verursacht eine inakzeptable Wiederherstellungszeit.
-
Ein freier Block wird benötigt und keiner wird nach einer bestimmten Suchmenge gefunden.
-
Bestimmte DDL-Befehle (Data Definition Language). (DDL-Befehle sind SQL-Anweisungen, die Objekte in einer Datenbank definieren.)
-
Alle drei Sekunden.
-
Andere Gründe. Der Algorithmus ist komplex und Sie können sich nicht sicher sein, welche Änderungen bei jeder Softwareversion auftreten.
-
Tatsache ist, dass die Datenbank ziemlich beschäftigt ist, Blöcke in einer Umgebung zu schreiben, in der es viele Änderungen gibt.