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

Sélectionnez une version de la documentation :

Cette page explique comment provisionner, configurer et utiliser la mise en cache sur disque dans 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 disque AlloyDB Omni permet de stocker des tampons sur un stockage rapide tel que les disques SSD (Solid-State Drives). La mise en cache sur 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 disque AlloyDB Omni n'est pas persistant, ce qui signifie que les données mises en cache sont perdues au 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

Pour activer le cache de disque pour AlloyDB Omni dans un conteneur, procédez comme suit.

Provisionner des disques et créer un système de fichiers

Pour le cache de disque AlloyDB Omni, vous créez un système de fichiers sur un ou plusieurs disques et vous l'installez dans un conteneur avec AlloyDB Omni. Vous pouvez également utiliser des utilitaires tels que mdadm ou lvm pour regrouper la capacité à l'aide de plusieurs disques et utiliser n'importe quel système de fichiers.

Les étapes suivantes montrent comment utiliser lvm et ext4 sur une instance Ubuntu Compute Engine avec des SSD NVMe.

  1. Créez un groupe de volumes à partir de tous les périphériques physiques disponibles :

      nvme_prefix="STORAGE_PREFIX"
      nvme_list=$(ls "$nvme_prefix"*)
      sudo vgcreate VOLUME_GROUP ${nvme_list}

    Remplacez les éléments suivants :

    • STORAGE_PREFIX : préfixe du chemin d'accès aux disques locaux cibles associés à une machine virtuelle à l'aide de l'interface NVMe (Nonvolatile Memory Express). Par exemple, sur Google Cloud, les chemins d'accès aux périphériques NVMe commencent toujours par /dev/nvme0n.
    • VOLUME_GROUP : nom d'un groupe de volumes dans lequel vos SSD sont combinés, par exemple omni-disk-cache-volume.
  2. Pour créer un volume logique à partir de la capacité libre du groupe de volumes de l'étape précédente, utilisez la commande suivante :

      sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    Remplacez LOGICAL_VOLUME par le nom d'un volume logique traité comme une partition par le LVM, par exemple omni_disk_cache_device.

  3. Créez le système de fichiers ext4 sur le volume logique. Si nécessaire, vous pouvez spécifier d'autres options ext4 soumises à la sécurité des données.
      sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. Pour créer un répertoire servant de point d'installation sur la machine hôte et installer le système de fichiers, exécutez la commande suivante :

      sudo mkdir /OMNI_DISK_CACHE_DIRECTORY
      sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY

    Remplacez OMNI_DISK_CACHE_DIRECTORY par le nom du répertoire ou par un chemin d'accès au répertoire servant de point de montage (par exemple, omni_disk_cache_directory).

Installer le répertoire du cache dans AlloyDB Omni

Avant d'activer le cache de disque pour AlloyDB Omni exécuté dans un conteneur, vous devez installer le répertoire de cache dans AlloyDB Omni.

Pour savoir comment installer AlloyDB Omni à partir d'une image Docker et le personnaliser, consultez Personnaliser votre installation AlloyDB Omni.

Pour installer OMNI_DISK_CACHE_DIRECTORY dans votre conteneur Docker exécutant AlloyDB Omni, utilisez la commande suivante :

Docker

      sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni

Remplacez les éléments suivants :

  • CONTAINER_NAME : nom à attribuer au nouveau conteneur AlloyDB Omni (par exemple, my-omni).
  • PASSWORD : mot de passe de l'administrateur racine de votre base de données PostgreSQL
  • DATA_DIR : chemin d'accès au système de fichiers qu'AlloyDB Omni doit utiliser pour son répertoire de données.
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER : répertoire du cache dans le conteneur AlloyDB Omni qui correspond au point de montage sur la machine hôte (par exemple, en fonction de la valeur du répertoire du cache dans le conteneur, /omni_disk_cache_directory, semblable à OMNI_DISK_CACHE_DIRECTORY, ou /disk/cache/inside/container).

Podman

      podman run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni

Remplacez les éléments suivants :

  • CONTAINER_NAME : nom à attribuer au nouveau conteneur AlloyDB Omni (par exemple, my-omni).
  • PASSWORD : mot de passe de l'administrateur racine de votre base de données PostgreSQL
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER : répertoire du cache dans le conteneur AlloyDB Omni qui correspond au point de montage sur la machine hôte (par exemple, en fonction de la valeur du répertoire du cache dans le conteneur, /omni_disk_cache_directory, semblable à OMNI_DISK_CACHE_DIRECTORY, ou /disk/cache/inside/container).

Pour accorder des autorisations d'accès complet au OMNI_DISK_CACHE_DIRECTORY monté, utilisez les commandes suivantes :

Docker

      sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      sudo docker exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      

Podman

      sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      sudo podman exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
      

Activer le cache de disque AlloyDB Omni

Pour activer le cache de disque AlloyDB Omni pour votre base de données, définissez les paramètres GUC (Grand Unified Configuration) appropriés après vous être assuré que le répertoire de cache monté est accessible depuis le conteneur Docker.

  1. Pour vous connecter à la base de données AlloyDB Omni conteneurisée en tant que superutilisateur, utilisez la commande suivante :

    Docker

          sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres
          

    Podman

          sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
          
  2. Pour définir la valeur des paramètres, utilisez les commandes suivantes dans la base de données AlloyDB Omni :

            alter system set omni_disk_cache_enabled=on;
            alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
          
  3. Par défaut, AlloyDB Omni utilise tout l'espace disponible dans le système de fichiers. Si nécessaire, vous pouvez remplacer la valeur par défaut à l'aide du paramètre omni_disk_cache_file_size.

          alter system set omni_disk_cache_file_size=SIZE_IN_MB;
          
  4. Pour que la modification des paramètres de configuration de la mise en cache prenne effet, redémarrez votre conteneur en cours d'exécution avec AlloyDB Omni :

    Docker

          sudo docker restart CONTAINER_NAME
          

    Podman

          sudo podman restart CONTAINER_NAME
          

Vérifier la configuration du cache disque

Après avoir activé le cache disque AlloyDB Omni, vérifiez que le cache disque est accessible en surveillant l'activité de lecture et d'écriture sur les disques à l'aide d'utilitaires tels que iotop ou iostat.

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

Pour vérifier la configuration du cache de disque pour AlloyDB Omni dans un conteneur, procédez comme suit :

Docker

sudo docker logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"

Podman

sudo podman logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"

Si la mise en cache sur disque est correctement configurée, le message "Successfully opened omni disk cache ..." (Cache de disque Omni ouvert) s'affiche dans les journaux.

Étapes suivantes