Configurer le moteur de données en colonnes dans AlloyDB Omni

Sélectionnez une version de la documentation :

Cette page explique comment activer ou désactiver le moteur de données en colonnes sur un cluster de base de données AlloyDB Omni. Elle explique également comment configurer une taille initiale appropriée pour son store orienté colonnes.

Pour une présentation conceptuelle du moteur de données en colonnes AlloyDB, consultez Présentation du moteur de données en colonnes AlloyDB Omni.

Activer le moteur de données en colonnes

Pour utiliser le moteur de données en colonnes sur une instance, définissez l'indicateur google_columnar_engine.enabled sur on.

Serveur unique

Pour définir google_columnar_engine.enabled sur on, procédez comme suit :

  1. Exécutez la ALTER SYSTEM commande PostgreSQL :

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. Si vous souhaitez ajuster la configuration du moteur de données en colonnes, suivez les instructions de la section suivante avant de redémarrer le serveur de base de données. Sinon, passez à l'étape suivante pour redémarrer le serveur de base de données maintenant.

  3. Pour que les paramètres de configuration soient pris en compte, redémarrez votre conteneur en cours d'exécution avec AlloyDB Omni.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Configurer la taille du store orienté colonnes

Lorsque le moteur de données en colonnes est activé sur une instance, AlloyDB Omni alloue une partie de la mémoire de l'instance pour stocker ses données en colonnes. Le fait de dédier de la RAM haute vitesse à votre store orienté colonnes permet de vérifier qu'AlloyDB Omni peut accéder aux données en colonnes aussi rapidement que possible.

La mémoire et le cache de stockage représentent ensemble la capacité globale du moteur de données en colonnes.

Configurer la mémoire

Vous pouvez définir l'allocation sur une taille fixe à l'aide de l' google_columnar_engine.memory_size_in_mb indicateur.

Serveur unique

Pour définir l'indicateur google_columnar_engine.memory_size_in_mb sur une instance, procédez comme suit :

  1. Configurez la mémoire en exécutant la ALTER SYSTEM commande PostgreSQL :

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    Remplacez COLUMN_MEMORY_SIZE par la nouvelle taille du stockage de colonnes, en mégaoctets (par exemple, 256).

  2. Pour que les paramètres de configuration soient pris en compte, redémarrez votre conteneur en cours d'exécution avec AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Configurer le cache de stockage

Serveur unique

Vous pouvez configurer le cache de stockage du moteur de données en colonnes sur des appareils dédiés ou partagés.

Appareils dédiés

Sur les appareils dédiés, pour activer le cache de stockage du moteur de données en colonnes AlloyDB Omni pour un conteneur à serveur unique, vous devez provisionner des disques et créer un système de fichiers, puis installer le répertoire de cache dans AlloyDB Omni et enfin activer le cache de stockage en colonnes.

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

Pour provisionner des disques et créer un système de fichiers pour le cache de stockage du moteur de données en colonnes 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 employer des utilitaires tels que mdadm ou lvm pour regrouper la capacité 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 à l'aide de SSD NVMe.

  1. Créez un groupe de volumes à partir de tous les appareils 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 exploitant la capacité disponible 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 liées à 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_COLUMNAR_STORAGE_CACHE_DIRECTORY
    sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY

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

Installer le répertoire de cache de stockage en colonnes dans AlloyDB Omni

Avant d'activer le cache du disque pour une instance AlloyDB Omni exécutée 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 d'AlloyDB Omni.

Pour installer OMNI_COLUMNAR_STORAGE_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_COLUMNAR_STORAGE_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 est mappé au point d'installation 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_COLUMNAR_STORAGE_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_COLUMNAR_STORAGE_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 est mappé au point d'installation sur la machine hôte (par exemple, en fonction de la valeur du répertoire du cache dans le conteneur : /omni_columnar_storage_cache_directory, semblable à OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, ou /disk/cache/inside/container).

Pour accorder des autorisations d'accès complet au OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY installé, 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 stockage en colonnes AlloyDB Omni pour AlloyDB Omni exécuté dans un conteneur

Pour activer le cache de stockage en colonnes AlloyDB Omni sur des appareils dédiés pour votre base de données, définissez les paramètres GUC (Grand Unified Configuration) appropriés après avoir vérifié que le répertoire de cache installé est accessible depuis le conteneur Docker.

  1. Définissez le répertoire de cache de stockage en colonnes :

    ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
    

    Remplacez OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY par le chemin absolu du répertoire dédié dans lequel vous souhaitez qu'AlloyDB Omni stocke les fichiers de cache de stockage du moteur de données en colonnes. Vérifiez que ce répertoire existe et qu'il dispose des autorisations d'écriture appropriées pour l'utilisateur de la base de données.

  2. Configurez la taille du cache de stockage :

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Remplacez STORAGE_CACHE_SIZE par la taille du cache de stockage en colonnes souhaitée, en mégaoctets. Par défaut, la taille totale de l'appareil dédié est allouée au moteur de données en colonnes, sans affecter le cache du disque. La valeur maximale autorisée pour cet indicateur est la plus petite des deux valeurs suivantes : 1 000 * google_columnar_engine.memory_size_in_mb.

  3. Pour que les paramètres de configuration soient pris en compte, redémarrez votre conteneur en cours d'exécution avec AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Appareils partagés

Avant de configurer le cache de stockage en colonnes sur des appareils partagés avec cache de disque, vous devez activer le cache de disque AlloyDB Omni.

Configurez le cache de stockage sur des appareils partagés comme suit :

  1. Configurez le cache de stockage :

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Remplacez STORAGE_CACHE_SIZE par la taille du cache de stockage souhaitée, en mégaoctets. Par défaut, 5% du cache du disque sont alloués au moteur de données en colonnes. La valeur maximale autorisée pour cet indicateur est la plus petite des deux valeurs suivantes : 50% du cache du disque total ou 1 000 * google_columnar_engine.memory_size_in_mb.

  2. Pour que les paramètres de configuration soient pris en compte, redémarrez votre conteneur en cours d'exécution avec AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Activer la jointure vectorisée

Le moteur de données en colonnes dispose d'une fonctionnalité de jointure vectorisée qui peut améliorer les performances des jointures en appliquant un traitement vectorisé aux requêtes éligibles.

Une fois la jointure vectorisée activée, le planificateur de requêtes AlloyDB a la possibilité d'appliquer l'opérateur de jointure vectorisée au lieu de l'opérateur de jointure de hachage PostgreSQL standard. Le planificateur prend cette décision en comparant le coût d'exécution de la requête à l'aide de chaque méthode.

Pour activer la jointure vectorisée sur une instance, définissez l'indicateur google_columnar_engine.enable_vectorized_join de l'instance sur on.

Pour définir cet indicateur sur une instance, exécutez la commande PostgreSQL ALTER SYSTEM :

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

Par défaut, AlloyDB Omni alloue un thread à la fonctionnalité de jointure vectorisée. Vous pouvez augmenter le nombre de threads disponibles pour cette fonctionnalité en définissant l' google_columnar_engine.vectorized_join_threads indicateur sur une valeur plus élevée. La valeur maximale est cpu_count * 2.

Actualiser manuellement votre moteur de données en colonnes

Par défaut, lorsque le moteur de données en colonnes est activé, il actualise le store orienté colonnes en arrière-plan.

Pour actualiser manuellement le moteur de données en colonnes, exécutez la requête SQL suivante :

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

Remplacez TABLE_NAME par le nom de la table ou de la vue matérialisée que vous souhaitez actualiser manuellement.

Désactiver le moteur de données en colonnes

Pour désactiver le moteur de données en colonnes sur une instance, définissez l'indicateur google_columnar_engine.enabled sur off.

Serveur unique

Pour définir google_columnar_engine.enabled sur off, procédez comme suit :

  1. Exécutez la ALTER SYSTEM commande PostgreSQL :
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. Pour que les paramètres de configuration soient pris en compte, redémarrez votre conteneur en cours d'exécution avec AlloyDB Omni.

Docker

Pour redémarrer un conteneur AlloyDB Omni, exécutez la docker container restart commande :

  sudo docker restart CONTAINER_NAME

Remplacez CONTAINER_NAME par le nom que vous avez attribué au conteneur AlloyDB Omni lors de son installation.

Podman

Pour redémarrer un conteneur AlloyDB Omni, exécutez la podman container start commande :

  sudo podman restart CONTAINER_NAME

Remplacez CONTAINER_NAME par le nom que vous avez attribué au conteneur AlloyDB Omni lors de son installation.

Étape suivante