Accelera le prestazioni del database utilizzando la cache del disco

Seleziona una versione della documentazione:

Questa pagina descrive come eseguire il provisioning, configurare e utilizzare la memorizzazione nella cache del disco su AlloyDB Omni per aumentare le prestazioni dell'installazione di AlloyDB Omni.

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:

  1. È stato creato un cluster con spazio di archiviazione basato su SSD locale.
  2. Hai formattato il volume nel file system ext4 utilizzando il passaggio 1 di Esegui il provisioner statico del volume locale.
  3. Hai creato manualmente un volume permanente per ogni SSD nel cluster con storageClass che 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:

  1. Modifica il manifest del cluster di database per aggiungere l'attributo ultraFastCache alla sezione features della sezione spec:

          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 esempio 100Gi. Deve essere superiore a shared_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 del storage class del volume della cache ultra veloce, ad esempio local-storage.
  2. 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:

  1. È stato creato un cluster con spazio di archiviazione basato su SSD locale.
  2. Hai formattato il volume nel file system ext4 utilizzando il passaggio 1 di Esegui il provisioner statico del volume locale.

Per abilitare la cache del disco su un volume locale per il database:

  1. Modifica il manifest del cluster di database per aggiungere l'attributo ultraFastCache alla sezione features della sezione spec:

        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 esempio 100Gi. Deve essere superiore a shared_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 esempio cloud.google.com/gke-local-nvme-ssd.
    • OPERATOR_VALUE: la relazione della chiave con un insieme di valori, ad esempio In. 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 esempio true. Imposta il parametro su un array di valori stringa nel seguente modo:
      • Se l'operatore è In o NotIn, l'array di valori non deve essere vuoto.
      • Se l'operatore è Exists o DoesNotExist, l'array di valori deve essere vuoto.
      • Se l'operatore è Gt o Lt, l'array di valori deve avere un singolo elemento, che viene interpretato come un numero intero.
  2. 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:

  1. Modifica il manifest del cluster di database per aggiungere l'attributo ultraFastCache alla sezione features della sezione spec e specifica emptyDirVolume:

          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.
  2. 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