Sie können beim Starten von AlloyDB Omni das obere Limit des gemeinsam genutzten Puffers festlegen. Wenn Sie kein oberes Limit festlegen, legt AlloyDB Omni die Größe des gemeinsam genutzten Puffers automatisch auf 80% des Systemspeichers fest. Die anfängliche Größe des gemeinsam genutzten Puffers kann sich vom oberen Limit unterscheiden.
AlloyDB Omni besteht aus einem intelligenten Arbeitsspeicher-Worker, der den Arbeitsspeicherstatus ständig überwacht und die Größe des gemeinsam genutzten Puffers für eine optimale Leistung beim Caching von Daten anpasst.

Standardmäßig ist der Parameter shared_buffers auf 0 gesetzt. Dieser spezielle Wert legt das obere Limit für die Größe des shared buffers-Cache auf 80% des Systemspeichers fest. AlloyDB Omni beginnt bei 10% des oberen Limits von shared_buffers. Wenn shared_buffers durch einen benutzerdefinierten Wert überschrieben wird, berücksichtigt AlloyDB Omni diesen Wert als oberes Limit 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 setzen. Die Methode hängt von Ihrem Bereitstellungstyp ab:
shared_buffers mit einer der folgenden Methoden festlegen. Nachdem Sie die Änderung angewendet 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: Befehl
ALTER SYSTEMverwendenStellen Sie mit einem SQL-Client eine Verbindung zu Ihrer 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 gängige Szenarien geeignet.
Sie können den Wert jedoch für eine optimale Leistung anpassen.
Wenn Sie den Standardwert von shared_buffers verwenden möchten, um das obere Limit des gemeinsam genutzten Puffers abzuleiten, verwenden Sie den Wert memory.max der Cgroup, um die Berechnung zu beeinflussen.
Arbeitsspeicher der spaltenbasierten Engine
Der dynamische shared_buffers ist unabhängig vom Arbeitsspeicher der spaltenbasierten Engine. Wenn die spaltenbasierte Engine aktiviert ist, kann die dynamische Größe von shared_buffers abgeleitet werden, indem die von der spaltenbasierten Engine verwendete Arbeitsspeichermenge von 80% des Gesamtspeichers subtrahiert wird, der für das System oder die Cgroup verfügbar ist.
Huge Pages
Huge Pages verbessern die Datenbankleistung. AlloyDB Omni verwaltet Huge Pages nach Möglichkeit explizit. Andernfalls wird die Funktion „Transparent Huge Pages“ (THP) des Betriebssystems verwendet. Wenn keiner der beiden Huge Page-Typen unterstützt wird, greift AlloyDB Omni auf 4-KB-Seiten zurück und gibt in den Datenbanklogs eine Warnung mit spezifischen Anweisungen 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 Arbeitsspeicherverwaltung zur Laufzeit
AlloyDB Omni überwacht ständig die Systemlast und passt die Arbeitsspeichernutzung an, um die Leistung zu verbessern. Insbesondere können Sie Folgendes beobachten:
- Änderung der dynamischen Größe von
shared_buffers - AlloyDB Omni erhöht die dynamische Größe von
shared_buffers, wenn die Arbeitsspeichernutzung des Systems niedrig ist, und verringert sie, wenn die Arbeitsspeichernutzung des Systems hoch ist. Die Erweiterung `g_memory` ist in der AlloyDB Omni-Distribution enthalten. Führen Sie die folgenden Befehle aus, um sie 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 feststellt, dass das System nur noch sehr wenig Arbeitsspeicher hat, versucht es, die PostgreSQL-Verbindungen zu löschen, die am meisten Arbeitsspeicher verbrauchen, bis die Last wieder auf ein angemessenes Niveau sinkt. In diesem Fall protokolliert AlloyDB Omni einen Eintrag ähnlich dem folgenden Beispiel in den Datenbanklogs:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)