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

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:

  1. Hai creato un cluster con spazio di archiviazione basato su SSD locali.
  2. Hai formattato il volume nel file system ext4 utilizzando il passaggio 1 di Eseguire il provisioner statico del volume locale.
  3. Hai creato manualmente un volume permanente per ogni SSD nel cluster con la storageClass che definisce lo spazio di archiviazione permanente su un dispositivo di archiviazione.

Per abilitare la cache del disco su un volume generico 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
                  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 esempio 100Gi. Deve essere maggiore di 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 della cache ultra veloce, ad esempio local-storage.
  2. 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:

  1. Hai creato un cluster con spazio di archiviazione basato su SSD locali.
  2. Hai formattato il volume nel file system ext4 utilizzando il passaggio 1 di Eseguire 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: la dimensione della cache, ad esempio 100Gi. Deve essere maggiore di 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 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 esempio true. Imposta il parametro su un array di valori stringa come segue:
      • 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. 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:

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