Inhaltsverzeichnis:
- Der Bibliotheks-Cache in Oracle 12c
- Der Wörterbuch-Cache in Oracle 12c
- Der Server-Ergebniscache in Oracle 12c
- Der reservierte Pool in Oracle 12c
- Zuletzt verwendeter Algorithmus in Oracle 12c
Video: Oracle shared pool Analyzer 2024
Bestimmte Objekte und Geräte in Oracle 12c werden häufig verwendet. Daher ist es sinnvoll, sie jedes Mal bereit zu haben, wenn Sie eine Operation durchführen möchten. Außerdem werden Daten im gemeinsam genutzten Pool niemals auf die Festplatte geschrieben.
Der gemeinsame Pool selbst besteht aus vier Hauptbereichen:
-
Bibliothekscache
-
Wörterbuchcache
-
Server Ergebniscache
-
Reservierter Pool
Ein Cache ist ein temporärer Speicherbereich, der für einen schnellen Abruf von Informationen erstellt wurde, die andernfalls möglicherweise länger zum Abrufen benötigt werden. Zum Beispiel enthalten die in der vorhergehenden Liste erwähnten Caches vorberechnete Informationen. Anstatt dass ein Benutzer jedes Mal Werte berechnen muss, kann der Benutzer auf die Informationen in einem Cache zugreifen.
Der Bibliotheks-Cache in Oracle 12c
Der Bibliotheks-Cache ist genau so, wie er heißt: eine Bibliothek. Genauer gesagt handelt es sich um eine Bibliothek von gebrauchsfertigen SQL-Anweisungen.
Jedes Mal, wenn Sie eine SQL-Anweisung ausführen, passiert viel im Hintergrund. Diese Hintergrundaktivität wird Parsing genannt. Das Parsen kann in Bezug auf die Verarbeitungsleistung ziemlich teuer sein.
Beim Parsen passieren einige dieser Dinge:
-
Die Anweisungssyntax wird überprüft, um sicherzustellen, dass alles korrekt eingegeben wurde.
-
Die Objekte, auf die Sie sich beziehen, sind markiert. Wenn Sie beispielsweise versuchen, auf eine Tabelle namens EMPLOYEE zuzugreifen, stellt Oracle sicher, dass diese in der Datenbank vorhanden ist.
-
Oracle stellt sicher, dass Sie die Berechtigung haben, das zu tun, was Sie gerade tun.
-
Der Code wird in ein datenbankfähiges Format konvertiert. Das Format wird Bytecode oder P-Code genannt.
-
Oracle bestimmt den optimalen Pfad oder Plan. Dies ist mit Abstand der teuerste Teil.
Jedes Mal, wenn Sie eine Anweisung ausführen, werden die Informationen im Cache der Bibliothek gespeichert. Auf diese Weise muss beim nächsten Ausführen der Anweisung nicht viel geschehen (z. B. das Überprüfen von Berechtigungen).
Der Wörterbuch-Cache in Oracle 12c
Der Wörterbuch-Cache wird auch häufig zum Parsen verwendet, wenn Sie SQL ausführen. Sie können es sich als eine Sammlung von Informationen über Sie und die Objekte der Datenbank vorstellen. Es kann Hintergrundinformationen überprüfen.
Der Wörterbuch-Cache wird auch von den Regeln des Least Recently Used (LRU) -Algorithmus bestimmt: Wenn es nicht die richtige Größe hat, können Informationen entfernt werden. Wenn nicht genügend Platz für den Wörterbuchcache vorhanden ist, kann dies die Festplattennutzung beeinträchtigen.
Da die Definitionen von Objekten und die auf Berechtigungen basierenden Informationen in Datenbankdateien gespeichert sind, muss Oracle Festplatten lesen, um diese Informationen erneut in den Wörterbuch-Cache zu laden. Das ist zeitaufwändiger, als es aus dem Speichercache zu bekommen.Stellen Sie sich ein System mit tausenden von Benutzern vor, die SQL ständig ausführen … Ein falsch formatierter Wörterbuch-Cache kann die Leistung stark beeinträchtigen.
Wie beim Bibliothekscache können Sie die Größe des Wörterbuchcache nicht direkt steuern. Wenn sich der gesamte gemeinsam genutzte Pool ändert, ändert sich auch der Cache des Wörterbuchs.
Der Server-Ergebniscache in Oracle 12c
Der Server-Ergebniscache besteht aus zwei Teilen:
-
SQL-Ergebniscache: Dieser Cache lässt Oracle erkennen, dass die angeforderten Daten - angefordert von einer kürzlich ausgeführten SQL-Anweisung - möglicherweise gespeichert werden. In dieser Situation kann Oracle den Ausführungsteil der Ausführung ohne einen besseren Begriff überspringen und direkt zur Ergebnismenge gehen, falls diese existiert.
Der SQL-Ergebniscache funktioniert am besten bei relativ statischen Daten (wie die Beschreibung eines Elements auf einer E-Commerce-Site).
Sollten Sie sich Sorgen machen, dass der Ergebnis-Cache falsche Daten zurückgibt? Ganz und gar nicht. Oracle invalidiert automatisch Daten, die im Ergebniscache gespeichert sind, wenn eine der zugrunde liegenden Komponenten geändert wird.
-
Ergebnis-Cache der PL / SQL-Funktion: Der Ergebnis-Cache der PL / SQL-Funktion speichert die Ergebnisse einer Berechnung. Angenommen, Sie haben eine Funktion, die den Wert des Dollars auf der Grundlage des Wechselkurses des Euro berechnet. Sie möchten diesen tatsächlichen Wert möglicherweise nicht speichern, da er sich ständig ändert.
Stattdessen haben Sie eine Funktion, die einen Tages- oder Stundensatz aufruft, um den Wert des Dollars zu bestimmen. In einer Finanzanwendung könnte dieser Anruf Tausende Male pro Stunde stattfinden. Aus diesem Grund wird anstelle der ausführenden Funktion direkt in den PL / SQL-Ergebniscache gewechselt, um die Daten zwischen den Tarifaktualisierungen abzurufen. Wenn sich die Rate ändert, führt Oracle die Funktion erneut aus und aktualisiert den Ergebniscache.
Der reservierte Pool in Oracle 12c
Wenn Oracle einen großen Chunk (über 5 KB) zusammenhängenden Hauptspeichers im freigegebenen Pool reservieren muss, weist es den Speicher im reservierten Pool zu. Das Reservieren des reservierten Pools, um große Arbeitsspeicherzuordnungen zu handhaben, verbessert Leistung und verringert Arbeitsspeicherverfremdung.
Zuletzt verwendeter Algorithmus in Oracle 12c
Wenn der Bibliothekscache nur wenig Platz hat, werden Objekte verworfen. Anweisungen, die am häufigsten verwendet werden, bleiben am längsten in der Bibliothek. Je öfter sie verwendet werden, desto geringer ist die Chance, dass sie vertrieben werden, wenn der Cache der Bibliothek nicht ausreicht.
Der Cache-Eviction-Prozess der Bibliothek basiert auf dem so genannten Least Recently Used (LRU) -Algorithmus. Wenn Ihr Schreibtisch überladen ist, was legen Sie zuerst weg? Das Zeug, das du am wenigsten benutzt.
Sie können die Größe des Bibliothekscache nicht selbst ändern. Die Gesamtgröße des freigegebenen Pools bestimmt dies. Wenn Sie glauben, dass zu viele Anweisungen entfernt werden, können Sie die Gesamtgröße des gemeinsam genutzten Pools erhöhen, wenn Sie ihn selbst optimieren. Wenn Sie Oracle das Tuning tun lassen, holt es freies Gedächtnis von anderswo.