Automatische Speicherverwaltung

Wählen Sie eine Dokumentationsversion aus:

AlloyDB Omni verwendet adaptive Algorithmen für die Arbeitsspeicherverwaltung.

Sie können beim Starten von AlloyDB Omni das obere Limit des freigegebenen Puffers festlegen. Wenn Sie das obere Limit nicht festlegen, wird die Größe des Sicherungsspeichers für freigegebene Puffer in AlloyDB Omni automatisch auf 80% des Systemspeichers festgelegt. Die anfängliche Größe des Backings des freigegebenen Puffers kann sich von der Obergrenze unterscheiden.

AlloyDB Omni besteht aus einem intelligenten Arbeitsspeicher-Worker, der den Arbeitsspeicherstatus ständig überwacht und die Sicherungsgröße für gemeinsam genutzte Puffer für eine optimale Leistung beim Zwischenspeichern von Daten anpasst.

Automatischer Arbeitsspeicher

Standardmäßig ist der Parameter shared_buffers auf 0 festgelegt. Das ist ein spezieller Wert, der die Obergrenze für die Größe des shared buffers-Cache auf 80% des Systemspeichers festlegt. AlloyDB Omni beginnt bei 10% des shared_buffers-Höchstbetrags. Wenn shared_buffers durch einen benutzerdefinierten Wert überschrieben wird, berücksichtigt AlloyDB Omni den Wert als Obergrenze für die Größe von shared_buffers und beginnt mit der angegebenen benutzerdefinierten Größe.

Wenn Sie eine benutzerdefinierte Größe angeben möchten, können Sie shared_buffers auf 1GB festlegen. Die Methode hängt von Ihrem Bereitstellungstyp ab:

Bei Linux-basierten Installationen (einschließlich RPM) können Sie den Parameter shared_buffers mit einer der folgenden Methoden festlegen. Nachdem Sie die Änderung vorgenommen haben, müssen Sie den Dienst neu starten.

  • Option 1: Konfigurationsdatei bearbeiten

    1. Öffnen Sie die Datei postgresql.conf zur Bearbeitung.

    2. Fügen Sie die folgende Zeile hinzu oder ändern Sie sie:

      shared_buffers = 1GB
      
    3. Speichern Sie die Datei und starten Sie den AlloyDB Omni-Dienst neu:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Ersetzen Sie MAJOR_VERSION durch die Hauptversion Ihrer AlloyDB Omni-Installation, z. B. 18.

  • Option 2: Den Befehl ALTER SYSTEM verwenden

    1. Stellen Sie mit einem SQL-Client eine Verbindung zur Datenbankinstanz her.

    2. Führen Sie dazu diesen Befehl aus:

      ALTER SYSTEM SET shared_buffers = '1GB';
      
    3. Starten Sie den AlloyDB Omni-Dienst neu:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Ersetzen Sie MAJOR_VERSION durch die Hauptversion Ihrer AlloyDB Omni-Installation, z. B. 18.

Abfrageleistung optimieren

Der Standardwert des Parameters shared_buffers ist für die meisten Szenarien geeignet.

Sie können den Wert jedoch für eine optimale Leistung anpassen. Wenn Sie den Standardwert von shared_buffers verwenden, um die Obergrenze für den freigegebenen Puffer abzuleiten, verwenden Sie den cgroup-Wert memory.max, um die Berechnung zu beeinflussen.

Arbeitsspeicher der spaltenbasierten Engine

Die dynamische shared_buffers ist unabhängig vom Arbeitsspeicher der spaltenbasierten Engine. Wenn die spaltenbasierte Engine aktiviert ist, kann die dynamische shared_buffers-Größe abgeleitet werden, indem die von der spaltenbasierten Engine verwendete Speichermenge von 80% des Gesamtspeichers subtrahiert wird, der dem System oder der Cgroup zur Verfügung steht.

Große Seiten

Huge Pages verbessern die Datenbankleistung. AlloyDB Omni verwaltet Huge Pages nach Möglichkeit explizit. Andernfalls wird die THP-Funktion (Transparent Huge Pages) des Betriebssystems verwendet. Wenn keiner der beiden Huge-Page-Typen unterstützt wird, greift AlloyDB Omni auf 4k-Seiten zurück und gibt eine Warnung in den Datenbanklogs mit einer genauen Anleitung zum Einrichten von Huge Pages aus.

Die Warnung sieht in etwa so aus:


HINT:  Please manually execute:
          echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
          sudo sysctl -w vm.nr_overcommit_hugepages="$(/usr/bin/awk '/MemTotal/ { printf "%.0f", $2/1024 }' /proc/meminfo)"

Automatische Speicherverwaltung zur Laufzeit

AlloyDB Omni überwacht ständig die Systemlast und passt den Arbeitsspeicherverbrauch an, um die Leistung zu verbessern. Konkret kann Folgendes passieren:

Dynamische shared_buffers-Größenänderung
AlloyDB Omni erhöht die dynamische shared_buffers-Größe, wenn der Systemspeicherverbrauch niedrig ist, und verringert die Größe, wenn der Systemspeicherverbrauch hoch ist. Die Erweiterung `g_memory` ist in der AlloyDB Omni-Distribution enthalten. Führen Sie die folgenden Befehle aus, um die Funktion zu aktivieren und die dynamische Größe von `shared_buffers` zu überwachen:
CREATE EXTENSION IF NOT EXISTS g_memory;
SELECT g_dynamic_shared_size();
Beenden einer PostgreSQL-Verbindung, wenn das System nur noch sehr wenig Arbeitsspeicher hat
Wenn AlloyDB Omni erkennt, dass das System nur noch sehr wenig Arbeitsspeicher hat, werden die PostgreSQL-Verbindungen mit dem höchsten Arbeitsspeicherverbrauch gelöscht, bis die Last wieder ein angemessenes Niveau erreicht. In diesem Fall protokolliert AlloyDB Omni einen Eintrag, der dem folgenden Beispiel ähnelt, in den Datenbanklogs:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)