Puoi decidere il limite massimo del buffer condiviso all'avvio di AlloyDB Omni. Se non imposti il limite superiore, AlloyDB Omni imposta automaticamente la dimensione del buffer condiviso sull'80% della memoria di sistema. La dimensione iniziale del buffer condiviso può essere diversa dal limite massimo.
AlloyDB Omni è costituito da un worker di memoria intelligente che monitora costantemente lo stato della memoria e ottimizza le dimensioni del buffer condiviso per ottenere le migliori prestazioni durante la memorizzazione dei dati nella cache.

Per impostazione predefinita, il parametro shared_buffers è impostato su 0, un valore speciale che imposta il limite superiore della dimensione della cache shared buffers sull'80% della memoria di sistema. AlloyDB Omni parte dal 10% del limite massimo di shared_buffers. Se shared_buffers viene sostituito da un valore personalizzato, AlloyDB Omni rispetta il valore come limite massimo della dimensione di shared_buffers e inizia con la dimensione personalizzata specificata.
Per specificare una dimensione personalizzata, puoi impostare shared_buffers su 1GB. Il metodo dipende dal tipo di deployment:
shared_buffers utilizzando uno dei seguenti metodi. Dopo aver applicato la modifica, devi riavviare il servizio.
Opzione 1: modifica il file di configurazione
Apri il file
postgresql.confper modificarlo.Aggiungi o modifica la seguente riga:
shared_buffers = 1GBSalva il file e riavvia il servizio AlloyDB Omni:
sudo systemctl restart alloydbomniMAJOR_VERSIONSostituisci
MAJOR_VERSIONcon la versione principale della tua installazione di AlloyDB Omni, ad esempio18.
Opzione 2: utilizza il comando
ALTER SYSTEMConnettiti all'istanza del database utilizzando un client SQL.
Esegui questo comando:
ALTER SYSTEM SET shared_buffers = '1GB';Riavvia il servizio AlloyDB Omni:
sudo systemctl restart alloydbomniMAJOR_VERSIONSostituisci
MAJOR_VERSIONcon la versione principale della tua installazione di AlloyDB Omni, ad esempio18.
Ottimizza le prestazioni delle query
Il valore predefinito del parametro shared_buffers funziona per gli scenari comuni.
Tuttavia, puoi ottimizzare il valore per ottenere prestazioni migliori.
Se scegli di fare affidamento sul valore predefinito di shared_buffers per dedurre il limite superiore del buffer condiviso, utilizza il valore cgroup memory.max per influenzare il calcolo.
Memoria del motore colonnare
La shared_buffers dinamica è indipendente dalla memoria del motore colonnare. Quando il motore colonnare è abilitato, la dimensione dinamica di shared_buffers può essere calcolata sottraendo la quantità di memoria utilizzata dal motore colonnare dall'80% della memoria totale disponibile per il sistema o il cgroup.
Huge page
Le huge page migliorano le prestazioni del database. AlloyDB Omni gestisce le huge page in modo esplicito, se possibile, altrimenti si basa sulla funzionalità di huge page trasparenti (THP) del sistema operativo. Se non è supportato alcun tipo di huge page, AlloyDB Omni esegue il fallback alla pagina 4k e stampa un avviso nei log del database con istruzioni specifiche per configurare le huge page.L'avviso è simile al seguente:
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)"
Gestione automatica della memoria in fase di runtime
AlloyDB Omni monitora costantemente il carico del sistema e regola il consumo di memoria per migliorare le prestazioni. Nello specifico, potresti osservare quanto segue:
- Modifica dinamica delle dimensioni di
shared_buffers - AlloyDB Omni aumenta le dimensioni dinamiche di
shared_buffersquando il consumo di memoria di sistema è basso e le riduce quando il consumo di memoria di sistema è elevato. L'estensione `g_memory` è inclusa nella distribuzione di AlloyDB Omni. Per abilitarla e monitorare le dimensioni dinamiche di "shared_buffers", esegui questi comandi:CREATE EXTENSION IF NOT EXISTS g_memory; SELECT g_dynamic_shared_size();
- Interruzione di una connessione PostgreSQL quando la memoria del sistema è estremamente ridotta
-
Quando AlloyDB Omni rileva che la memoria del sistema è quasi esaurita, tenta di eliminare le connessioni PostgreSQL che consumano più memoria finché il carico non torna a un livello ragionevole. Quando si verifica un evento di questo tipo, AlloyDB Omni registra una voce simile al seguente esempio nei log del database:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)