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 :
Exécutez la
ALTER SYSTEMcommande PostgreSQL :ALTER SYSTEM SET google_columnar_engine.enabled = 'on'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.
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_NAMEPodman
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 :
Configurez la mémoire en exécutant la
ALTER SYSTEMcommande PostgreSQL :ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;Remplacez
COLUMN_MEMORY_SIZEpar la nouvelle taille du stockage de colonnes, en mégaoctets (par exemple,256).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_NAMEPodman
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.
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 exempleomni-disk-cache-volume.
-
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_VOLUMEpar le nom d'un volume logique traité comme une partition par le LVM, par exempleomni_disk_cache_device. - Créez le système de fichiers
ext4sur le volume logique. Si nécessaire, vous pouvez spécifier d'autres optionsext4liées à la sécurité des données.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
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_DIRECTORYpar 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.
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_DIRECTORYpar 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.Configurez la taille du cache de stockage :
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Remplacez
STORAGE_CACHE_SIZEpar 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.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_NAMEPodman
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 :
Configurez le cache de stockage :
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Remplacez
STORAGE_CACHE_SIZEpar 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.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_NAMEPodman
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 :
- Exécutez la
ALTER SYSTEMcommande PostgreSQL :
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- 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_NAMERemplacez 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_NAMERemplacez CONTAINER_NAME par le nom que vous avez attribué au conteneur AlloyDB Omni lors de son installation.
Étape suivante
Consultez la liste complète des indicateurs de base de données du moteur de données en colonnes.
Suivez le tutoriel Google CodeLab Accélérer les requêtes analytiques avec le moteur de données en colonnes dans AlloyDB Omni.