Cette page explique comment activer ou désactiver le moteur en colonnes sur un cluster de base de données AlloyDB Omni. Il explique également comment configurer une taille initiale appropriée pour son magasin de colonnes.
Pour obtenir une présentation conceptuelle du moteur de données en colonnes AlloyDB, consultez la présentation du moteur de données en colonnes AlloyDB Omni.
Activer le moteur de données en colonnes
Pour utiliser le moteur de colonnes sur une instance, définissez l'indicateur google_columnar_engine.enabled
de l'instance sur on
.
La procédure à suivre pour définir cet indicateur sur une instance dépend de l'environnement dans lequel vous exécutez AlloyDB Omni : conteneur ou cluster Kubernetes.
Serveur unique
Pour définir google_columnar_engine.enabled
sur on
, procédez comme suit:
Exécutez la commande PostgreSQL
ALTER SYSTEM
:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
Si vous souhaitez ajuster la configuration du moteur de colonnes, suivez les instructions de la section suivante avant de redémarrer le serveur de base de données. Sinon, procédez comme suit pour redémarrer le serveur de base de données immédiatement.
Pour que les modifications apportées aux paramètres de configuration prennent 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
Kubernetes
Pour définir l'indicateur google_columnar_engine.enabled
sur on
, modifiez le fichier manifeste de votre cluster de base de données afin d'ajouter l'attribut parameters
à la section primarySpec
:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "on"
Remplacez CLUSTER_NAME
par le nom de votre cluster de base de données. Il s'agit du même nom de cluster de base de données que vous avez déclaré lors de sa création.
Configurer la taille du store de 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. En affectant de la RAM haute vitesse à votre store orienté colonnes, vous vous assurez 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'option google_columnar_engine.memory_size_in_mb
.
Les étapes à suivre pour configurer la mémoire du store orienté colonnes pour AlloyDB Omni dépendent de l'environnement dans lequel vous exécutez AlloyDB Omni : conteneur ou cluster Kubernetes.
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 commande PostgreSQL
ALTER SYSTEM
:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
Remplacez
COLUMN_MEMORY_SIZE
par la nouvelle taille de l'espace de stockage de la colonne, en mégaoctets (par exemple,256
).Pour que les modifications apportées aux paramètres de configuration prennent 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
Kubernetes
Pour définir l'indicateur google_columnar_engine.memory_size_in_mb
, modifiez le fichier manifeste de votre cluster de base de données afin d'ajouter l'attribut parameters
à la section primarySpec
:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
parameters:
google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster de base de données. Il s'agit du même nom de cluster de base de données que vous avez déclaré lors de sa création.COLUMN_MEMORY_SIZE
: nouvelle taille de l'espace de stockage de la colonne, en mégaoctets (par exemple,256
).
Configurer le cache de stockage
Avant de configurer le cache de stockage, vous devez activer le cache de disque AlloyDB Omni.
La procédure à suivre pour activer le cache de stockage pour AlloyDB Omni dépend de l'environnement dans lequel vous exécutez AlloyDB Omni : conteneur ou cluster Kubernetes.
Serveur unique
Configurez le cache de stockage comme suit:
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 disque est alloué au moteur de colonnes. La valeur maximale autorisée pour cet indicateur est de 50% de la taille totale du cache disque ou de 1 000 * google_columnar_engine.memory_size_in_mb, la valeur la plus faible étant retenue.Pour que les modifications apportées aux paramètres de configuration prennent 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
Kubernetes
Pour activer le cache de stockage pour votre base de données, modifiez le fichier manifeste de votre cluster de base de données afin d'ajouter l'attribut columnarSpillToDisk
à la section features
de la section primarySpec
:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: STORAGE_CACHE_SIZE
ultraFastCache:
cacheSize: ULTRAFAST_CACHE_SIZE
genericVolume:
storageClass: "STORAGE_CLASS_NAME"
...
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster de base de données. Il s'agit du même nom de cluster de base de données que vous avez déclaré lors de sa création.STORAGE_CACHE_SIZE
: taille du cache de stockage en colonnes (par exemple,5Gi
). Si vous ne spécifiez pas de valeur pour ce champ, 5% du cache disque est alloué au moteur de colonnes par défaut.ULTRAFAST_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 restant sur le disque, ce qui s'applique à la fois à AlloyDB Omni dans un conteneur et sur un cluster Kubernetes. Pour en savoir plus sur les unités de mesure, consultez la section Unités de ressource de mémoire.STORAGE_CLASS_NAME
: nom de la classe de stockage du volume de cache ultra-rapide (par exemple,local-storage
).
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 le traitement vectorisé aux requêtes éligibles.
Une fois la jointure vectorisée activée, l'outil de planification des requêtes AlloyDB peut 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'indicateur google_columnar_engine.vectorized_join_threads
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 magasin de colonnes en arrière-plan.
Pour actualiser manuellement le moteur de 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 colonne sur une instance, définissez l'indicateur google_columnar_engine.enabled
sur off
.
La procédure à suivre pour définir cet indicateur sur une instance dépend de la façon dont vous exécutez AlloyDB Omni dans un conteneur sur un seul serveur ou sur un cluster Kubernetes.
Serveur unique
Pour définir google_columnar_engine.enabled
sur off
, procédez comme suit:
- Exécutez la commande PostgreSQL
ALTER SYSTEM
:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- Pour que les modifications apportées aux paramètres de configuration prennent effet, redémarrez votre conteneur en cours d'exécution avec AlloyDB Omni.
Docker
Pour redémarrer un conteneur AlloyDB Omni, exécutez la commande docker container restart
:
sudo docker restart CONTAINER_NAME
Remplacez CONTAINER_NAME
par le nom que vous avez attribué au conteneur AlloyDB Omni lorsque vous l'avez installé.
Podman
Pour redémarrer un conteneur AlloyDB Omni, exécutez la commande podman container start
:
sudo podman restart CONTAINER_NAME
Remplacez CONTAINER_NAME
par le nom que vous avez attribué au conteneur AlloyDB Omni lorsque vous l'avez installé.
Kubernetes
Pour définir l'indicateur google_columnar_engine.enabled
sur off
, modifiez le fichier manifeste de votre cluster de base de données afin d'ajouter l'attribut parameters
à la section primarySpec
:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "off"
Remplacez CLUSTER_NAME
par le nom de votre cluster de base de données. Il s'agit du même nom de cluster de base de données que vous avez déclaré lors de sa création.
Résoudre les problèmes liés au moteur de données en colonnes
Corriger l'erreur insufficient shared memory
Si vous exécutez AlloyDB Omni sans suffisamment de mémoire partagée pour que le moteur de données en colonnes puisse l'utiliser, l'erreur suivante peut s'afficher:
Insufficient shared memory for generating the columnar formats.
Pour résoudre ce problème, spécifiez la quantité de mémoire partagée disponible pour le conteneur AlloyDB Omni. La manière de procéder diffère en fonction de votre système d'exploitation hôte.
Linux
Augmentez la taille de la partition /dev/shm
de votre machine hôte à l'aide d'une technique telle que la modification de votre fichier /etc/fstab
.
macOS
Installez un nouveau conteneur AlloyDB Omni, en spécifiant une valeur de mémoire partagée plus élevée pour l'indicateur --shm-size
.
Corriger les colonnes qui ne sont pas renseignées
Si les colonnes ne sont pas renseignées dans le moteur de colonnes, l'une des conditions suivantes peut être vraie:
Les colonnes que vous souhaitez ajouter incluent un type de données non accepté.
Les exigences du moteur de données en colonnes ne sont pas respectées.
Pour résoudre ce problème, procédez comme suit:
- Vérifiez que les tables ou les vues matérialisées de la requête se trouvent dans le moteur de colonnes.
- Vérifiez l'utilisation du moteur en colonnes à l'aide de l'instruction
EXPLAIN
.
Étape suivante
Consultez la liste complète des indicateurs de base de données du moteur de colonnes.
Suivez le tutoriel Google CodeLab Accélérer les requêtes analytiques avec le moteur de données en colonnes dans AlloyDB Omni.