Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
RDSfür Postgre-Speicher SQL
RDSfür Postgre ist der SQL Speicher in gemeinsam genutzten und lokalen Speicher unterteilt.
Gemeinsamer Speicher RDS für Postgre SQL
RDSfür Postgre SQL weist Shared Memory zu, wenn die Instanz gestartet wird. Shared Memory ist in mehrere Teilbereiche unterteilt. Nachfolgend finden Sie eine Beschreibung der wichtigsten.
Freigegebene Puffer
Der gemeinsam genutzte Pufferpool ist ein SQL Speicherbereich RDS für Postgre, der alle Seiten enthält, die von Anwendungsverbindungen verwendet werden oder wurden. Eine Seite ist die Speicherversion eines Plattenblocks. Der gemeinsam genutzte Pufferpool zwischenspeichert die von der Platte gelesenen Datenblöcke. Der Pool reduziert die Notwendigkeit, Daten erneut von der Festplatte zu lesen, wodurch die Datenbank effizienter arbeitet.
Jede Tabelle und jeder Index wird als Array von Seiten einer festen Größe gespeichert. Jeder Block enthält mehrere Tupel, die Zeilen entsprechen. Ein Tupel kann auf jeglicher Seite gespeichert werden.
Der gemeinsam genutzte Pufferpool hat endlichen Speicher. Wenn für eine neue Anfrage eine Seite benötigt wird, die sich nicht im Speicher befindet, und kein weiterer Speicher vorhanden ist, wird RDS für Postgre SQL eine weniger häufig verwendete Seite entfernt, um die Anfrage zu bearbeiten. Die Räumungsrichtlinie wird durch einen Takt-Sweep-Algorithmus implementiert.
Der Parameter shared_buffers
bestimmt, wie viel Speicher der Server für das Caching von Daten bereitstellt.
Log () -Puffer im Voraus schreiben WAL
Ein Write-Ahead-Log (WAL) -Puffer enthält Transaktionsdaten, die RDS für Postgre SQL später in den persistenten Speicher geschrieben werden. Mit diesem WAL Mechanismus kann RDS für Postgre Folgendes erreicht SQL werden:
-
Daten nach einem Fehler wiederherstellen
-
Reduzieren Sie die Festplatten–I/O indem Sie häufige Schreibvorgänge auf die Festplatte vermeiden
Wenn ein Client Daten ändert, RDS SQL schreibt Postgre die Änderungen in den WAL Puffer. Wenn der Client eine ausgibtCOMMIT
, schreibt der WAL Writer-Prozess Transaktionsdaten in die WAL Datei.
Der wal_level
Parameter bestimmt, wie viele Informationen in die geschrieben WAL werden.
Lokaler Speicher in RDS für Postgre SQL
Jeder Backend-Prozess weist lokalen Speicher für die Abfrageverarbeitung zu.
Arbeitsspeicherbereich
Der Arbeitsspeicherbereich enthält temporäre Daten für Abfragen, die Sortierungen und Hashes durchführen. Beispielsweise führt eine Abfrage mit einer ORDER BY
-Klausel eine Sortierung durch. Abfragen verwenden Hash-Tabellen in Hash-Joins und Aggregationen.
Der work_mem
-Parameter die Speichermenge, die von internen Sortiervorgängen und Hash-Tabellen verwendet werden soll, bevor in temporäre Plattendateien geschrieben wird. Der Standardwert lautet 4 MB. Mehrere Sitzungen können gleichzeitig ausgeführt werden, und jede Sitzung kann Wartungsvorgänge parallel ausführen. Aus diesem Grund kann der gesamte verwendete Arbeitsspeicher ein Vielfaches der Einstellung work_mem
betragen.
Wartungs-Arbeitsspeicherbereich
Der Wartungsarbeitsspeicherbereich speichert Daten für Wartungsvorgänge zwischen. Zu diesen Vorgängen gehören das Vakuumieren, das Erstellen eines Index und das Hinzufügen von Fremdschlüsseln.
Der Parameter maintenance_work_mem
gibt die maximale Speichermenge an, die von Wartungsvorgängen verwendet werden soll. Der Standardwert lautet 64 MB. In einer Datenbanksitzung kann jeweils nur ein Wartungsvorgang ausgeführt werden.
Temporärer Pufferbereich
Der temporäre Pufferbereich speichert temporäre Tabellen für jede Datenbanksitzung zwischen.
Jede Sitzung weist temporäre Puffer nach Bedarf bis zu dem von Ihnen angegebenen Limit zu. Wenn die Sitzung endet, löscht der Server die Puffer.
Der Parameter temp_buffers
legt die maximale Anzahl temporärer Puffer fest, die von jeder Sitzung verwendet werden. Vor der ersten Verwendung temporärer Tabellen innerhalb einer Sitzung können Sie den temp_buffers
-Wert ändern.