Accélérer les performances de la base de données à l'aide du cache de disque

Sélectionnez une version de la documentation :

Cette page explique comment provisionner, configurer et utiliser la mise en cache du disque sur AlloyDB Omni pour améliorer les performances de votre installation AlloyDB Omni.

En plus des tampons partagés en mémoire PostgreSQL standards, le cache de disque AlloyDB Omni permet de stocker des tampons sur une solution de stockage rapide, comme des disques durs SSD (Solid-State Drives). La mise en cache de disque accélère la récupération des données dans les installations AlloyDB Omni dont les répertoires de données sont situés sur un stockage plus lent.

Comme les tampons partagés PostgreSQL, le cache de disque AlloyDB Omni n'est pas persistant, ce qui signifie que les données mises en cache sont perdues en cas de redémarrage.

Par défaut, le cache de disque AlloyDB Omni utilise tout l'espace de stockage indiqué par le système de fichiers. Vous pouvez définir la quantité de stockage réservée à la mise en cache des données à l'aide du paramètre omni_disk_cache_file_size.

Activer le cache de disque AlloyDB Omni

La procédure à suivre pour activer le cache de disque pour AlloyDB Omni dépend de la façon dont vous exécutez AlloyDB Omni (dans un conteneur ou sur un cluster Kubernetes).

Activer le cache de disque sur un volume générique

Vous pouvez activer le cache de disque à l'aide d'un volume générique.

Pour activer le cache de disque sur un volume générique de l'opérateur Kubernetes AlloyDB Omni, vous avez besoin d'un volume persistant prêt à l'avance et d'un storageClass.

Par exemple, si vous utilisez GKE et que le volume persistant et storageClass ne sont pas prêts, assurez-vous d'avoir effectué les opérations suivantes avant d'activer le cache de disque sur un volume générique :

  1. Vous avez créé un cluster avec un stockage basé sur un disque SSD local.
  2. Vous avez formaté votre volume au système de fichiers ext4 en suivant l'étape 1 de la section Exécuter l'approvisionneur statique de volumes locaux.
  3. Vous avez créé manuellement un volume persistant pour chaque SSD de votre cluster avec le storageClass qui définit le stockage persistant sur un périphérique de stockage.

Pour activer le cache de disque sur un volume générique pour votre base de données, procédez comme suit :

  1. Modifiez le fichier manifeste de votre cluster de bases de données pour ajouter l'attribut ultraFastCache à la section features de la section 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"
          ...
          

    Remplacez les éléments suivants :

    • DB_CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
    • DISK_CACHE_SIZE : taille du cache, par exemple 100Gi. Il doit être supérieur à shared_buffers. Ce champ est facultatif. Si vous ne spécifiez pas la valeur de ce champ, AlloyDB Omni utilise tout l'espace disque restant, ce qui s'applique à la fois à AlloyDB Omni dans un conteneur et sur un cluster Kubernetes.
    • STORAGE_CLASS_NAME : nom du storage class du volume de cache ultrarapide, par exemple local-storage.
  2. Appliquez à nouveau le fichier manifeste.

Activer le cache de disque sur un volume local

Si vous souhaitez utiliser un volume local, vous n'avez pas besoin de créer un volume persistant. Vous pouvez utiliser l'optimisation suivante à la place.

Par exemple, si vous utilisez GKE et que le volume persistant et storageClass ne sont pas prêts, assurez-vous d'avoir effectué les opérations suivantes avant d'activer le cache de disque sur un volume local :

  1. Vous avez créé un cluster avec un stockage basé sur un disque SSD local.
  2. Vous avez formaté votre volume au système de fichiers ext4 en suivant l'étape 1 de la section Exécuter l'approvisionneur statique de volumes locaux.

Pour activer le cache de disque sur un volume local pour votre base de données, procédez comme suit :

  1. Modifiez le fichier manifeste de votre cluster de bases de données pour ajouter l'attribut ultraFastCache à la section features de la section 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"
        ...
          

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
    • DISK_CACHE_SIZE : taille du cache, par exemple 100Gi. Il doit être supérieur à shared_buffers. Ce champ est facultatif. Si vous ne spécifiez pas la valeur de ce champ, AlloyDB Omni utilise tout l'espace disque restant, ce qui s'applique à la fois à AlloyDB Omni dans un conteneur et sur un cluster Kubernetes.
    • STORAGE_CLASS_NAME : nom de la classe de stockage.
    • LOCAL_VOLUME_PATH : chemin d'accès au volume local (par exemple, /mnt/disks/raid/0).
    • LABEL_KEY : étiquette du nœud pour la clé qui sert d'indicateur d'emplacement et facilite la répartition uniforme des pods dans le cluster (par exemple, cloud.google.com/gke-local-nvme-ssd).
    • OPERATOR_VALUE : relation de la clé avec un ensemble de valeurs (par exemple, In). Définissez le paramètre sur l'une des valeurs suivantes :
      • In : le tableau de valeurs ne doit pas être vide.
      • NotIn : le tableau de valeurs ne doit pas être vide.
      • Exists : le tableau de valeurs doit être vide.
      • DoesNotExist : le tableau de valeurs doit être vide.
      • Gt : le tableau de valeurs doit comporter un seul élément, qui est interprété comme un entier.
      • Lt : le tableau de valeurs doit comporter un seul élément, qui est interprété comme un entier.
    • LABEL_KEY_VALUE : valeur de la clé de libellé (par exemple, true). Définissez le paramètre sur un tableau de valeurs de chaîne comme suit :
      • Si l'opérateur est In ou NotIn, le tableau de valeurs ne doit pas être vide.
      • Si l'opérateur est Exists ou DoesNotExist, le tableau de valeurs doit être vide.
      • Si l'opérateur est Gt ou Lt, le tableau de valeurs doit comporter un seul élément, qui est interprété comme un entier.
  2. Appliquez à nouveau le fichier manifeste.

Activer le cache de disque sur un volume éphémère

Vous pouvez activer le cache de disque à l'aide d'un volume emptyDir, qui fournit un stockage temporaire directement lié au cycle de vie de votre pod. Le volume est créé lorsqu'un pod est attribué à un nœud et existe tant que le pod s'exécute sur ce nœud.

Lorsque le pod est supprimé d'un nœud, les données du volume emptyDir sont définitivement supprimées. Ce type de volume convient à un cache, car il offre un stockage temporaire et rapide. Les données du cache n'ont pas besoin d'être conservées si le pod est reprogrammé.

Pour activer le cache de disque sur un volume éphémère pour votre base de données, procédez comme suit :

  1. Modifiez le fichier manifeste de votre cluster de bases de données pour ajouter l'attribut ultraFastCache à la section features de la section spec, et spécifiez 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: {}
            ...
          

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
    • DISK_CACHE_SIZE : taille du cache (par exemple, 200 Gi).
  2. Appliquez à nouveau le fichier manifeste.

Vérifier la configuration du cache de disque

Après avoir activé le cache de disque AlloyDB Omni, surveillez l'activité de lecture et d'écriture sur les disques à l'aide d'utilitaires tels que iotop ou iostat pour vous assurer que le cache de disque est bien accessible.

Vous pouvez également vérifier si le cache de disque AlloyDB Omni est ouvert.

Pour vérifier la configuration du cache de disque pour AlloyDB Omni, utilisez la commande suivante.

  kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"

Si la mise en cache de disque est correctement configurée, le message Successfully opened omni disk cache ... s'affiche dans les journaux.

Étapes suivantes