Heim >häufiges Problem >Logger-Puffergröße, wofür das Protokoll verwendet wird

Logger-Puffergröße, wofür das Protokoll verwendet wird

青灯夜游
青灯夜游Original
2023-03-13 16:27:316406Durchsuche

Die Funktion besteht darin, den Ingenieuren Feedback-Nutzungsinformationen und -aufzeichnungen zur Verfügung zu stellen, um die Problemanalyse zu erleichtern (wird während der Entwicklung verwendet). Da Benutzer selbst nicht oft Upload-Protokolle erstellen, sind sie für Benutzer nutzlos. Der Protokollierungspuffer ist ein kleiner, temporärer Bereich, der zur kurzfristigen Speicherung von Änderungsvektoren für Redo-Protokolle verwendet wird, die auf die Festplatte geschrieben werden sollen. Beim Schreiben eines Protokollpuffers auf die Festplatte handelt es sich um einen Stapel von Änderungsvektoren aus mehreren Transaktionen. Dennoch wird der Änderungsvektor im Protokollpuffer nahezu in Echtzeit auf die Festplatte geschrieben, und wenn die Sitzung eine COMMIT-Anweisung ausgibt, wird der Protokollpuffer-Schreibvorgang in Echtzeit ausgeführt.

Logger-Puffergröße, wofür das Protokoll verwendet wird

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.

Der Zweck von Log-Recorder-Puffergrößenprotokollen besteht hauptsächlich darin, Ingenieuren Feedback zu Nutzungsinformationen und Aufzeichnungen zu geben, um die Problemanalyse zu erleichtern (wird während der Entwicklung verwendet), da Benutzer selbst nicht oft Upload-Protokolle erstellen und daher für Benutzer nutzlos sind.

Der Protokollierungspuffer ist ein kleiner, temporärer Bereich, der zur kurzfristigen Speicherung von Änderungsvektoren für Redo-Protokolle verwendet wird, die auf die Festplatte geschrieben werden. „Änderungsvektoren“ sind Änderungen, die auf bestimmte Objekte angewendet werden. Durch die Ausführung einer DML-Anweisung wird ein Änderungsvektor generiert, der auf die Daten angewendet wird.

Mit Redo-Logs kann die Datenbank sicherstellen, dass Daten niemals verloren gehen: Immer wenn sich ein Datenblock ändert, wird der auf den Block angewendete Änderungsvektor in das Redo-Log geschrieben, und wenn die Datendatei wiederhergestellt werden muss, wird er weitergeleitet Mit dem Redo-Log kann der Änderungsvektor extrahiert und auf die Datendateisicherung angewendet werden.

Logger-Puffergröße, wofür das Protokoll verwendet wird

Der Sitzungsserverprozess schreibt Redo-Datensätze nicht direkt in die Redo-Log-Datei, andernfalls muss die Sitzung bei jeder Ausführung einer DML-Anweisung auf den Abschluss des Festplatten-E/A-Vorgangs warten. Stattdessen schreibt die Sitzung Redo-Datensätze in einen Protokollpuffer im Arbeitsspeicher. Dies ist viel schneller als das Schreiben auf die Festplatte. Anschließend wird der Protokollpuffer (der abwechselnde Änderungsvektoren für mehrere Sitzungen enthalten kann) in die Redo-Log-Datei geschrieben. Daher handelt es sich beim Schreiben eines Protokollpuffers auf die Festplatte um einen Stapel von Änderungsvektoren aus mehreren Transaktionen. Dennoch wird der Änderungsvektor im Protokollpuffer nahezu in Echtzeit auf die Festplatte geschrieben, und wenn die Sitzung eine COMMIT-Anweisung ausgibt, wird der Protokollpuffer-Schreibvorgang in Echtzeit ausgeführt. Schreibvorgänge werden vom Log Writer-Hintergrundprozess (LGWR) ausgeführt.

Logger-Puffergröße, wofür das Protokoll verwendet wird

Funktionen

Im Vergleich zu anderen Speicherstrukturen ist der Protokollpuffer kleiner, da es sich um einen sehr kurzlebigen Speicherbereich handelt. Fügen Sie den Änderungsvektor ein und lassen Sie ihn nahezu in Echtzeit auf die Festplatte übertragen. Der Protokollpuffer muss höchstens ein paar MB groß sein, und tatsächlich kann eine Einstellung auf einen größeren Wert als den Standardwert sehr negative Auswirkungen auf die Leistung haben. Der Standardwert wird vom Oracle-Server bestimmt und hängt von der Anzahl der CPUs im Serverknoten ab.

In den Entwickleroptionen gibt es eine Option namens „Logger-Puffergröße“. Die Protokolle werden zirkulär in den Puffer geschrieben Platz für neue Protokolle.

Die Größe des Logger-Puffers wird im Allgemeinen individuell angepasst. Er kann kleiner eingestellt werden, um die Bereinigung zu beschleunigen. Wenn Ihnen das egal ist, können Sie ihn etwas größer einstellen, etwa auf etwa 100.

Theoretisch gilt: Je größer, desto besser innerhalb eines bestimmten Werts (da dieser die Anzahl der Anwendungsebenen bestimmt, die Sie öffnen können).

Da Benutzer selbst nicht oft Upload-Protokolle erstellen, besteht keine Notwendigkeit, diese auf das Minimum anzupassen. Benutzer können die Standardeinstellungen verwenden. Beispielsweise kann bei einer hohen Gerätekonfiguration der Standardwert oder sogar der Maximalwert erhöht werden, um den individuellen Bedürfnissen des Benutzers gerecht zu werden.

Logger-Puffergröße, wofür das Protokoll verwendet wird

Einstellung

Der Protokollpuffer kann nicht kleiner als der Standardwert eingestellt werden. Wenn Sie dies versuchen, wird der Protokollpuffer auf die Standardgröße eingestellt. Es ist möglich, einen größeren Puffer als den Standardwert zu erstellen, dies wird jedoch im Allgemeinen nicht empfohlen. Das Problem besteht darin, dass bei der Ausgabe einer COMMIT-Anweisung ein Teil der Commit-Verarbeitung das Schreiben des Protokollpufferinhalts in die Redo-Log-Datei auf der Festplatte umfasst. Der Schreibvorgang wird in Echtzeit ausgeführt und während er ausgeführt wird, bleibt die Sitzung, die COMMIT ausgegeben hat, hängen. Die Commit-Verarbeitung ist ein wichtiger Bestandteil der Oracle-Architektur. Um sicherzustellen, dass eine festgeschriebene Transaktion niemals verloren geht, kann der Datenblock im Cache erst geändert werden, wenn der Datenblock geändert wurde (d. h. die Transaktion abgeschlossen wurde) und der Änderungsvektor in das Redo-Log auf der Festplatte geschrieben wurde (sodass). Die Transaktion kann bei Bedarf wiederhergestellt werden. Gibt eine Commit-Abschlussnachricht an die Sitzung zurück. Ein großer Protokollpuffer bedeutet, dass bei Ausgabe einer COMMIT-Anweisung mehr Inhalt geschrieben werden muss und es länger dauert, bis der Abschluss der Commit-Nachricht ausgegeben wird und die Sitzung ihre Arbeit wieder aufnimmt.

Logger-Puffergröße, wofür das Protokoll verwendet wird

Beschreibung:

  • Für einige Anwendungen ist es notwendig, die Größe des Protokollpuffers höher als den Standardwert festzulegen. Verwenden Sie jedoch im Allgemeinen den Standardprotokollpuffer, um mit der Optimierung zu beginnen.

  • Der Protokollpuffer wird beim Start der Instanz zugewiesen und kann anschließend nicht mehr in der Größe geändert werden, ohne die Instanz neu zu starten. Es handelt sich um einen Ringpuffer. Die aktuelle Schreibadresse bewegt sich hin und her, während der Serverprozess Änderungsvektoren darauf schreibt. Der Protokollschreibprozess schreibt Vektoren stapelweise aus. Ab diesem Zeitpunkt wird der von ihm belegte Platz verfügbar und kann durch weitere Änderungsvektoren abgedeckt werden. Zu Zeiten höchster Aktivität werden Änderungsvektoren möglicherweise schneller generiert, als der Protokollschreibprozess sie ausschreiben kann. In diesem Fall werden alle DML-Aktivitäten für einige Millisekunden angehalten, während der Protokollschreiber den Puffer löscht.

  • In der Oracle-Architektur ist das Speichern des Protokollpuffers auf der Festplatte einer der grundlegenden Engpässe. DML kann nicht schneller sein als LGWR, das Änderungsvektoren in Online-Redo-Log-Dateien ausgeben kann.

  • Wenn die Redo-Generierung der limitierende Faktor für die Datenbankleistung ist, ist die einzige Option die Verwendung von RAC. In einer RAC-Datenbank verfügt jede Instanz über einen eigenen Protokollpuffer und ein eigenes LGWR. Nur so können Redo-Daten parallel auf die Festplatte geschrieben werden.

Hinweise zum Logger-Puffer:

1. Größeneinstellung: Für einige Anwendungen ist es notwendig, die Größe des Protokollpuffers höher als den Standardwert einzustellen, normalerweise wird jedoch der Standard-Protokollpuffer verwendet. Beginnen Sie mit der Anpassung.

2. Instanzzuweisung: Der Protokollpuffer wird beim Start der Instanz zugewiesen. Wenn die Instanz nicht neu gestartet wird, kann ihre Größe nachträglich nicht angepasst werden. Es handelt sich um einen Ringpuffer. Die aktuelle Schreibadresse bewegt sich hin und her, während der Serverprozess Änderungsvektoren darauf schreibt.

3. Stapelverarbeitung: Der Protokollschreibprozess schreibt Vektoren im Stapelmodus. Zu diesem Zeitpunkt wird der von ihm belegte Speicherplatz verfügbar und kann durch weitere Änderungsvektoren abgedeckt werden. Zu Zeiten höchster Aktivität werden Änderungsvektoren möglicherweise schneller generiert, als der Protokollschreibprozess sie ausschreiben kann. In diesem Fall werden alle DML-Aktivitäten für einige Millisekunden angehalten, während der Protokollschreiber den Puffer löscht.

Weitere Informationen zu diesem Thema finden Sie in der Spalte „FAQ“!

Das obige ist der detaillierte Inhalt vonLogger-Puffergröße, wofür das Protokoll verwendet wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet API?Nächster Artikel:Was bedeutet API?