Oltre ai buffer condivisi in memoria di PostgreSQL standard, la cache del disco di AlloyDB Omni consente di archiviare i buffer su uno spazio di archiviazione veloce, come le unità a stato solido (SSD). La memorizzazione nella cache del 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 riservata alla memorizzazione nella cache dei dati utilizzando il parametro omni_disk_cache_file_size.
Abilitare la cache del disco di AlloyDB Omni
Per abilitare la cache del disco, completa una delle seguenti sottosezioni:
- Abilitare la cache del disco su un volume generico
- Abilitare la cache del disco su un volume locale
- Abilitare la cache del disco su un volume temporaneo
Abilitare la cache del disco su un volume generico
Puoi abilitare la cache del disco utilizzando un volume generico.
Per abilitare la cache del disco su un volume generico nell'operatore AlloyDB Omni Kubernetes, devi avere un volume permanente pronto in anticipo e una storageClass.
Ad esempio, se utilizzi GKE e non hai il volume permanente e la storageClass pronti, assicurati di aver eseguito le seguenti operazioni prima di abilitare la cache del disco su un volume generico:
- Hai creato un cluster con spazio di archiviazione basato su SSD locali.
- Hai formattato il volume nel file system ext4 utilizzando il passaggio 1 di Eseguire il provisioner statico del volume locale.
- Hai creato manualmente un volume permanente per ogni SSD nel cluster con la
storageClassche definisce lo spazio di archiviazione permanente su un dispositivo di archiviazione.
Per abilitare la cache del disco su un volume generico 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 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: la dimensione della cache, ad esempio100Gi. Deve essere maggiore dishared_buffers. Questo campo è facoltativo. Se non specifichi il valore di questo campo, AlloyDB Omni utilizza tutto lo spazio rimanente sul disco, sia per AlloyDB Omni in un container sia su un cluster Kubernetes.STORAGE_CLASS_NAME: il nome dellastorage classdel volume della cache ultra veloce, ad esempiolocal-storage.
- Riapplica 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 la storageClass pronti, assicurati di aver eseguito le seguenti operazioni prima di abilitare la cache del disco su un volume locale:
- Hai creato un cluster con spazio di archiviazione basato su SSD locali.
- Hai formattato il volume nel file system
ext4utilizzando il passaggio 1 di Eseguire 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: la dimensione della cache, ad esempio100Gi. Deve essere maggiore dishared_buffers. Questo campo è facoltativo. Se non specifichi il valore di questo campo, AlloyDB Omni utilizza tutto lo spazio rimanente sul disco, 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 di etichetta, ad esempiotrue. Imposta il parametro su un array di valori stringa come segue:- 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 è
- Riapplica il manifest.
Abilitare la cache del disco su un volume temporaneo
Puoi abilitare la cache del disco utilizzando un volume emptyDir, che fornisce spazio di archiviazione temporaneo collegato direttamente 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. Non è necessario rendere persistenti i dati nella cache se il pod viene ripianificato.
Per abilitare la cache del disco su un volume temporaneo per il database:
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 200Gi.
- Riapplica il manifest.
Verificare la configurazione della cache del disco
Dopo aver abilitato la cache del disco di AlloyDB Omni, verifica che la cache del disco sia accessibile monitorando l'attività di lettura e scrittura sui dischi utilizzando le utilità disponibili come iotop o iostat.
Inoltre, puoi verificare se la cache del disco di AlloyDB Omni è aperta.
Per verificare la configurazione della cache del disco per AlloyDB Omni, utilizza il seguente comando.
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 del 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