À propos du moteur en colonnes AlloyDB

Cette page présente le moteur de colonnes proposé par AlloyDB pour PostgreSQL et explique comment l'utiliser.

Le moteur en colonnes AlloyDB accélère le traitement des requêtes SQL pour les analyses, les jointures et les agrégations en fournissant les composants suivants :

  • Un magasin de colonnes contenant des données de table et de vue matérialisée pour les colonnes sélectionnées, réorganisées dans un format orienté colonne.

  • Un planificateur de requêtes et un moteur d'exécution en colonnes pour permettre l'utilisation du magasin de colonnes dans les requêtes.

Le moteur en colonnes peut être utilisé sur l'instance principale, une instance de pool de lecture ou les deux. Vous pouvez également utiliser l'auto-columnarisation pour analyser votre charge de travail et remplir automatiquement le column store avec les colonnes qui offrent le meilleur gain de performances.

Pour utiliser le moteur en colonnes avec une requête spécifique, toutes les colonnes des fragments de cette requête, tels que les jointures et les analyses, doivent se trouver dans le column store.

Par défaut, le moteur columnar est configuré pour utiliser 30 % de la mémoire de votre instance. En fonction de votre charge de travail, de l'utilisation de la mémoire et de la configuration d'un pool de lecture, vous pouvez choisir de réduire l'allocation de mémoire du moteur de colonnes sur votre instance principale et d'allouer plus de mémoire à l'instance de pool de lecture. Pour afficher et surveiller l'utilisation de la mémoire par le moteur de colonnes, consultez Afficher l'utilisation de la mémoire du columnstore. Pour modifier la taille de la mémoire utilisée par le column store, consultez Configurer la taille du column store. Pour connaître la taille de mémoire recommandée pour le moteur de données en colonnes de votre instance, consultez Recommander la taille de la mémoire du column store.

Types de requêtes qui bénéficient du moteur de données en colonnes

Certaines requêtes peuvent bénéficier du moteur en colonnes. Voici une liste des opérations et de leurs modèles de requête qui bénéficient le plus du moteur en colonnes :

  • Analyse de table

    • Il comporte des filtres sélectifs, tels que les clauses WHERE.
    • Elle utilise un petit nombre de colonnes d'une table ou d'une vue matérialisée plus grande.
    • Il utilise des expressions telles que LIKE, SUBSTR ou TRIM.
  • Fonctions d'agrégation

    • Ils n'utilisent que les expressions suivantes : SUM, MIN, MAX, AVG et COUNT.
    • Ils se trouvent au début de la requête d'une analyse par colonne.
    • Elles ne sont pas regroupées ou sont regroupées par colonnes.
  • ORDER-BY et SORT : uniquement lorsque ORDER-BY ou SORT figurent dans les résultats d'analyse des colonnes auxquelles le moteur columnar a accès.

  • LIMIT : uniquement si l'opérateur se trouve au début de la requête d'un scan de colonne et avant tout opérateur SORT ou GROUP BY.

  • INNER HASH JOIN uniquement si les clés utilisées sont des colonnes et qu'aucun qualificatif de jointure n'est utilisé.

  • Les jointures sélectives ne sont possibles que si les jointures se trouvent au début de la requête d'une analyse par colonne.

Pour en savoir plus sur les requêtes qui fonctionnent le mieux avec le moteur en colonnes, sur l'utilisation du moteur en colonnes par une requête et sur la façon dont il a été utilisé, consultez Vérifier l'utilisation du moteur en colonnes avec EXPLAIN.

Utiliser le moteur en colonnes

Pour utiliser le moteur de données en colonnes dans une instance AlloyDB, procédez comme suit :

  1. Activez le moteur sur l'instance.

    L'activation du moteur est une opération ponctuelle qui nécessite un redémarrage.

  2. Ajoutez des colonnes au column store.

    Pour ajouter des colonnes au column store, utilisez l'une des méthodes suivantes :

  3. Vous pouvez suivre le contenu du column store à l'aide de la vue g_columnar_relations. Une fois les colonnes ajoutées, vous pouvez utiliser l'instruction EXPLAIN pour vérifier l'utilisation du moteur de colonnes dans les requêtes SQL.

Pour obtenir des instructions détaillées sur l'utilisation du moteur en colonnes, consultez Configurer le moteur en colonnes.

Données que vous pouvez ajouter au column store

Il existe certaines limites concernant les types de données et les sources de données que vous pouvez utiliser lorsque vous ajoutez des colonnes au column store.

Types de données acceptés

Le moteur de colonnes n'accepte que les colonnes comportant les types de données intégrés suivants :

  • array
  • bigint
  • boolean
  • bytea
  • char
  • date
  • decimal
  • double precision
  • enum
  • float4
  • float8
  • integer
  • json
  • jsonb
  • numeric
  • real
  • serial
  • short
  • smallint
  • text
  • timestamp
  • timestamptz
  • uuid
  • varchar
  • vector (Preview)

Le moteur en colonnes ignore toute tentative d'ajout manuel de colonnes avec des types de données non compatibles au column store.

Sources de données non compatibles

Le moteur en colonnes n'est pas compatible avec les tables ni les vues matérialisées dont les sources de données présentent les attributs suivants :

  • Tables partitionnées non feuilles

  • Tables étrangères

  • Tables ou vues comportant moins de 5 000 lignes

Limites du moteur de données en colonnes

  • Si vous exécutez une requête analytique sur une colonne comportant un index, l'optimiseur AlloyDB peut choisir d'utiliser le row-store.
  • Les colonnes ajoutées manuellement au magasin de colonnes ne sont pas supprimées automatiquement. Pour forcer la suppression des colonnes ajoutées manuellement, utilisez google_columnar_engine_drop() sur votre instance.
  • La columnarisation automatique peut ajouter et supprimer des colonnes de manière dynamique en fonction de l'utilisation des requêtes.
  • Le moteur de colonnes n'est pas compatible avec tous les types de données. Pour connaître les types de données acceptés, consultez Types de données acceptés.
  • Les mises à jour fréquentes des lignes invalident les données en colonnes. Pour valider une table ou une vue matérialisée dans le magasin en colonnes, vous pouvez réduire la fréquence de mise à jour ou planifier des actualisations plus fréquentes du moteur en colonnes.

    Vous pouvez comparer les colonnes invalid_block_count et total_block_count dans g_columnar_relations pour vérifier si votre tableau ou votre vue sont concernés. Si vous apportez fréquemment ou en grand nombre des modifications à votre table ou vue, la valeur invalid_block_count sera élevée.

Étapes suivantes