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 migliorare le prestazioni dell'installazione di AlloyDB Omni.

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 per la memorizzazione dei dati nella cache utilizzando il parametro omni_disk_cache_file_size.

Abilita la cache del disco di AlloyDB Omni

Per attivare la cache del disco, completa una delle seguenti sottosezioni:

Attiva la cache del disco su un volume generico

Puoi attivare 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 un storageClass.

Ad esempio, se utilizzi GKE e non hai il volume permanente e storageClass pronti, assicurati di aver eseguito i seguenti passaggi prima di attivare la cache del disco su un volume generico:

  1. Creato un cluster con spazio di archiviazione basato su SSD locale.
  2. Formattato il volume nel file system ext4 utilizzando il passaggio 1 di Esegui il provisioner statico del volume locale.
  3. Creato manualmente un volume permanente per ogni SSD nel cluster con l'oggetto 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 lo 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, sia per AlloyDB Omni in un container sia su un cluster Kubernetes.
    • STORAGE_CLASS_NAME: il nome della storage class del volume di cache ultra veloce, ad esempio local-storage.
  2. Applica nuovamente il manifest.

Attiva la cache del disco su un volume locale

Se vuoi utilizzare un volume locale, non devi creare un volume permanente. In alternativa, puoi utilizzare la seguente ottimizzazione.

Ad esempio, se utilizzi GKE e non hai il volume permanente e storageClass pronti, assicurati di aver eseguito le seguenti operazioni prima di abilitare la cache del disco su un volume locale:

  1. Creato un cluster con spazio di archiviazione basato su SSD locale.

  2. 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 tuo database, segui questi 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
            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 lo 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, 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 dei valori non deve essere vuoto.
      • NotIn: l'array dei valori non deve essere vuoto.
      • Exists: l'array dei valori deve essere vuoto.
      • DoesNotExist: l'array dei 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 di stringa come segue:
      • Se l'operatore è In o NotIn, l'array dei valori non deve essere vuoto.
      • Se l'operatore è Exists o DoesNotExist, l'array dei 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.

Attiva la cache del disco su un volume temporaneo

Puoi attivare la cache del disco utilizzando un volume emptyDir, che fornisce uno 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 definitivamente. Questo tipo di volume è adatto per una cache perché fornisce uno spazio di archiviazione temporaneo e veloce. I dati nella cache non devono essere persistenti se il pod viene ripianificato.

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 lo hai creato.
    • DISK_CACHE_SIZE: le dimensioni della cache, ad esempio 200Gi.
  2. Applica nuovamente il manifest.

Verifica la configurazione della cache del disco

Dopo aver attivato la cache del disco di AlloyDB Omni, verifica che l'accesso alla cache del disco avvenga 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

* Configura il motore colonnare * Gestisci e monitora AlloyDB Omni