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.

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:
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
Öffnen Sie die Datei
postgresql.confzur Bearbeitung.Fügen Sie die folgende Zeile hinzu oder ändern Sie sie:
shared_buffers = 1GBSpeichern Sie die Datei und starten Sie den AlloyDB Omni-Dienst neu:
sudo systemctl restart alloydbomniMAJOR_VERSIONErsetzen Sie
MAJOR_VERSIONdurch die Hauptversion Ihrer AlloyDB Omni-Installation, z. B.18.
Option 2: Den Befehl
ALTER SYSTEMverwendenStellen Sie mit einem SQL-Client eine Verbindung zur Datenbankinstanz her.
Führen Sie dazu diesen Befehl aus:
ALTER SYSTEM SET shared_buffers = '1GB';Starten Sie den AlloyDB Omni-Dienst neu:
sudo systemctl restart alloydbomniMAJOR_VERSIONErsetzen Sie
MAJOR_VERSIONdurch 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)