Sie können die Obergrenze des gemeinsamen Zwischenspeichers beim Starten von AlloyDB Omni festlegen. Wenn Sie die Obergrenze nicht festlegen, setzt AlloyDB Omni die Größe des gemeinsamen Zwischenspeichers automatisch auf 80% des Systemspeichers. Die anfängliche Größe des gemeinsamen Zwischenspeichers kann von der Obergrenze abweichen.
AlloyDB Omni enthält einen intelligenten Memory Worker, der den Arbeitsspeicherstatus ständig überwacht und die Größe des gemeinsamen Zwischenspeichers für eine optimale Leistung beim Caching von Daten anpasst.

Standardmäßig ist der Parameter shared_buffers auf 0 festgelegt. Das ist ein spezieller Wert, der die Obergrenze der Größe des shared buffers-Cache auf 80% des Systemspeichers festlegt. AlloyDB Omni beginnt bei 10% der Obergrenze von shared_buffers. 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 dieser 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 der Art der Bereitstellung 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: 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 gängige 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 gemeinsamen Zwischenspeicher abzuleiten, verwenden Sie den cgroup-Wert memory.max, 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 shared_buffers-Größe abgeleitet werden, indem die von der spaltenbasierten Engine verwendete Speichermenge von 80% des gesamten für das System oder die cgroup verfügbaren Speichers abgezogen wird.
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 4k-Seiten zurück und gibt in den Datenbanklogs eine Warnung mit einer 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 die Systemlast kontinuierlich und passt den Arbeitsspeicherverbrauch an, um die Leistung zu verbessern. Konkret kann Folgendes auftreten:
- Dynamische Änderung der
shared_buffers-Größe - AlloyDB Omni erhöht die Größe des dynamischen
shared_buffers, 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();
- Beendigung einer PostgreSQL-Verbindung, wenn das System extrem wenig Arbeitsspeicher hat
-
Wenn AlloyDB Omni feststellt, dass das System extrem wenig Arbeitsspeicher hat, versucht es, die PostgreSQL-Verbindungen mit dem höchsten Arbeitsspeicherverbrauch zu löschen, bis die Last wieder auf ein angemessenes Niveau sinkt. Wenn ein solches Ereignis eintritt, protokolliert AlloyDB Omni einen Eintrag, der dem folgenden Beispiel in den Datenbanklogs ähnelt:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)