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

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 utiliser le moteur de données en colonnes lorsque vous utilisez AlloyDB pour PostgreSQL sur Google Cloud, consultez Configurer le moteur de données en colonnes.

Pour obtenir une présentation conceptuelle du moteur de données en colonnes AlloyDB, consultez la section À propos du moteur de données en colonnes AlloyDB.

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.

Pour définir cet indicateur sur une instance, procédez comme suit:

  1. Exécutez la commande PostgreSQL ALTER SYSTEM:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. 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, suivez les deux étapes suivantes pour redémarrer immédiatement le serveur de base de données.

  3. Arrêtez le serveur de base de données.

  4. Démarrez le serveur de base de données.

Configurer la taille du store de colonnes

Lorsque le moteur de données en colonnes est activé sur une instance, AlloyDB 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 peut accéder aux données en colonnes aussi rapidement que possible.

Vous pouvez également définir l'allocation sur une taille fixe et spécifique à l'aide de l'option google_columnar_engine.memory_size_in_mb. Pour définir cet indicateur sur une instance, procédez comme suit:

  1. Exécutez la commande PostgreSQL ALTER SYSTEM:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
    

    Remplacez COLUMN_STORE_SIZE par la nouvelle taille du magasin de colonnes, en mégaoctets.

  2. Arrêtez le serveur de base de données.

  3. Démarrez le serveur de base de données.

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 l'une ou l'autre des méthodes.

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 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.

Actualiser manuellement votre moteur de données en colonnes

Par défaut, le moteur de colonnes est configuré pour actualiser automatiquement le magasin de colonnes en arrière-plan lorsqu'il est activé. Vous devrez peut-être actualiser manuellement le magasin de colonnes dans certaines situations, par exemple si l'actualisation automatique n'actualise pas une relation avec un nombre élevé de blocs non valides.

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

SELECT google_columnar_engine_refresh('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.

Pour définir cet indicateur sur une instance, procédez comme suit:

  1. Exécutez la commande PostgreSQL ALTER SYSTEM:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
    
  2. Arrêtez le serveur de base de données.

  3. Démarrez le serveur de base de données.

Résoudre les problèmes liés au moteur de données en colonnes

Résoudre une erreur "mémoire partagée insuffisante"

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 situations 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 trouver l'origine de ce problème, procédez comme suit:

  • Vérifiez que les tables ou les vues matérialisées de notre 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