Oltre ai buffer condivisi in memoria PostgreSQL standard, la cache su disco di AlloyDB Omni consente di archiviare i buffer su un archivio veloce come le unità a stato solido (SSD). La memorizzazione nella cache su disco accelera il recupero dei dati nelle installazioni di AlloyDB Omni con directory di dati situate su uno spazio di archiviazione più lento.
Come i buffer condivisi di PostgreSQL, la cache del disco di AlloyDB Omni non è persistente, il che significa che i dati memorizzati nella cache vengono persi al riavvio.
Per impostazione predefinita, la cache del disco di AlloyDB Omni utilizza tutto lo spazio di archiviazione segnalato dal file system. Puoi definire la quantità di spazio di archiviazione riservato alla memorizzazione nella cache dei dati utilizzando il parametro omni_disk_cache_file_size.
Attiva la cache del disco AlloyDB Omni
I passaggi che utilizzi per attivare la cache del disco per AlloyDB Omni dipendono dal fatto che esegui AlloyDB Omni in un container o su un cluster Kubernetes.
Attivare la cache su disco su un volume generico
Puoi attivare la cache del disco utilizzando un volume generico.
Per attivare la cache del disco su un volume generico nell'operatore AlloyDB Omni Kubernetes, devi disporre di un volume permanente pronto in anticipo e di un storageClass.
Ad esempio, se utilizzi GKE e non hai il volume permanente e storageClass pronto, assicurati di aver eseguito le seguenti operazioni prima di attivare la cache del disco su un volume generico:
- È stato creato un cluster con spazio di archiviazione basato su SSD locale.
- Hai formattato il volume nel file system ext4 utilizzando il passaggio 1 di Esegui il provisioner statico del volume locale.
- Hai creato manualmente un volume permanente per ogni SSD nel cluster con
storageClassche definisce l'archiviazione permanente su un dispositivo di archiviazione.
Per attivare la cache del disco su un volume generico per il tuo database, completa i seguenti passaggi:
Modifica il manifest del cluster di database per aggiungere l'attributo
ultraFastCachealla sezionefeaturesdella sezionespec:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE genericVolume: storageClass: "STORAGE_CLASS_NAME" ...
Sostituisci quanto segue:
DB_CLUSTER_NAME: il nome del cluster di database. È lo stesso nome del cluster di database che hai dichiarato quando l'hai creato.DISK_CACHE_SIZE: le dimensioni della cache, ad esempio100Gi. Deve essere superiore ashared_buffers. Questo campo è facoltativo. Se non specifichi il valore di questo campo, AlloyDB Omni utilizza tutto lo spazio rimanente sul disco, il che vale sia per AlloyDB Omni in un container sia su un cluster Kubernetes.STORAGE_CLASS_NAME: il nome delstorage classdel volume della cache ultra veloce, ad esempiolocal-storage.
- Applica di nuovo il manifest.
Abilitare la cache del disco su un volume locale
Se vuoi utilizzare un volume locale, non devi creare un volume permanente. Puoi utilizzare la seguente ottimizzazione.
Ad esempio, se utilizzi GKE e non hai il volume permanente e storageClass pronto, assicurati di aver eseguito le seguenti operazioni prima di attivare la cache del disco su un volume locale:
- È stato creato un cluster con spazio di archiviazione basato su SSD locale.
- Hai formattato il volume nel file system
ext4utilizzando il passaggio 1 di Esegui il provisioner statico del volume locale.
Per abilitare la cache del disco su un volume locale per il database:
Modifica il manifest del cluster di database per aggiungere l'attributo
ultraFastCachealla sezionefeaturesdella sezionespec:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE localVolume: path: "LOCAL_VOLUME_PATH" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: "LABEL_KEY" operator: "OPERATOR_VALUE" values: - "LABEL_KEY_VALUE" ...
Sostituisci quanto segue:
CLUSTER_NAME: il nome del cluster di database. È lo stesso nome del cluster di database che hai dichiarato quando l'hai creato.DISK_CACHE_SIZE: le dimensioni della cache, ad esempio100Gi. Deve essere superiore ashared_buffers. Questo campo è facoltativo. Se non specifichi il valore di questo campo, AlloyDB Omni utilizza tutto lo spazio rimanente sul disco, il che vale sia per AlloyDB Omni in un container sia su un cluster Kubernetes.STORAGE_CLASS_NAME: il nome della classe di archiviazione.LOCAL_VOLUME_PATH: il percorso del volume locale, ad esempio/mnt/disks/raid/0.LABEL_KEY: l'etichetta del nodo per la chiave che funge da indicatore di posizione e facilita la distribuzione uniforme dei pod nel cluster, ad esempiocloud.google.com/gke-local-nvme-ssd.OPERATOR_VALUE: la relazione della chiave con un insieme di valori, ad esempioIn. Imposta il parametro su uno dei seguenti valori:-
In: l'array di valori non deve essere vuoto. -
NotIn: l'array di valori non deve essere vuoto. -
Exists: l'array di valori deve essere vuoto. -
DoesNotExist: l'array di valori deve essere vuoto. -
Gt: l'array di valori deve avere un singolo elemento, che viene interpretato come un numero intero. -
Lt: l'array di valori deve avere un singolo elemento, che viene interpretato come un numero intero.
-
LABEL_KEY_VALUE: il valore della chiave dell'etichetta, ad esempiotrue. Imposta il parametro su un array di valori stringa nel seguente modo:- Se l'operatore è
InoNotIn, l'array di valori non deve essere vuoto. - Se l'operatore è
ExistsoDoesNotExist, l'array di valori deve essere vuoto. - Se l'operatore è
GtoLt, l'array di valori deve avere un singolo elemento, che viene interpretato come un numero intero.
- Se l'operatore è
- Applica di nuovo il manifest.
Abilitare la cache del disco su un volume temporaneo
Puoi attivare la cache del disco utilizzando un volume emptyDir, che fornisce spazio di archiviazione temporaneo direttamente collegato al ciclo di vita del pod. Il volume viene creato quando un pod viene assegnato a un nodo ed esiste finché il pod è in esecuzione su quel nodo.
Quando un pod viene rimosso da un nodo, i dati in emptyDir vengono eliminati in modo permanente. Questo tipo di volume è adatto a una cache perché fornisce spazio di archiviazione temporaneo e veloce. I dati nella cache non devono essere resi persistenti se il pod viene riprogrammato.
Per attivare la cache del disco su un volume temporaneo per il tuo database, completa i seguenti passaggi:
Modifica il manifest del cluster di database per aggiungere l'attributo
ultraFastCachealla sezionefeaturesdella sezionespece specificaemptyDirVolume:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE emptyDirVolume: {} ...
Sostituisci quanto segue:
CLUSTER_NAME: il nome del cluster di database. È lo stesso nome del cluster di database che hai dichiarato quando l'hai creato.DISK_CACHE_SIZE: la dimensione della cache, ad esempio 200 Gi.
- Applica di nuovo il manifest.
Verifica la configurazione della cache su disco
Dopo aver abilitato la cache del disco di AlloyDB Omni, verifica che la cache del disco venga accessibile monitorando l'attività di lettura e scrittura sui dischi utilizzando le utilità disponibili come iotop o iostat.
Inoltre, puoi controllare se la cache del disco di AlloyDB Omni è aperta.
Per verificare la configurazione della cache del disco per AlloyDB Omni, utilizza il comando seguente.
kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"Se la memorizzazione nella cache su disco è configurata correttamente, nei log viene visualizzato il messaggio Successfully opened omni disk cache ....
Passaggi successivi
- Informazioni sulla gestione automatica della memoria
- Informazioni sui dischi SSD locali
- Creazione e avvio di un'istanza VM