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 materialisée pour des colonnes sélectionnées, réorganisées dans un format orienté colonnes.
Un planificateur de requêtes et un moteur d'exécution en colonnes pour prendre en charge l'utilisation du magasin de colonnes dans les requêtes.
Le moteur de colonnes peut être utilisé sur l'instance principale, une instance de pool de lecture ou les deux. Vous pouvez également utiliser la colonnarisation automatique pour analyser votre charge de travail et renseigner automatiquement le magasin de colonnes avec les colonnes qui offrent le meilleur gain de performances.
Pour utiliser le moteur de données en colonnes avec une requête spécifique, toutes les colonnes des fragments de cette requête, telles que les jointures et les analyses, doivent se trouver dans le magasin de colonnes.
Par défaut, le moteur de colonnes est défini 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 si vous avez configuré 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 du 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 magasin de colonnes. Pour modifier la taille de mémoire utilisée par le magasin de colonnes, consultez la section Configurer la taille du magasin de colonnes. Pour connaître la taille de mémoire recommandée pour votre instance de moteur de données en colonnes, consultez la section Recommander la taille de mémoire du magasin de colonnes.
Types de requêtes qui profitent du moteur de données en colonnes
Certaines requêtes peuvent bénéficier du moteur de données en colonnes. Vous trouverez ci-dessous la liste des opérations et des modèles de requêtes qui profitent le plus du moteur de colonnes:
Analyses de table
- Il dispose de 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".
- Il dispose de filtres sélectifs, tels que les clauses
Fonctions d'agrégation
- Elles n'utilisent que les expressions suivantes:
SUM
,MIN
,MAX
,AVG
etCOUNT
. - Ils se trouvent au début de la requête d'une analyse en colonnes.
- Elles ne sont pas regroupées ou sont regroupées par colonnes.
- Elles n'utilisent que les expressions suivantes:
ORDER-BY
etSORT
: uniquement lorsqueORDER-BY
ouSORT
figure dans les résultats de l'analyse des colonnes auxquelles on accède à partir du moteur de colonnes.LIMIT
: uniquement si l'opérateur se trouve au début de la requête d'une analyse en colonnes et avant tout opérateurSORT
ouGROUP BY
.INNER HASH JOIN
uniquement si les clés utilisées sont des colonnes et qu'aucun qualificatif de jointure n'est utilisé.Jointures sélectives uniquement si les jointures se trouvent au début de la requête d'une analyse en colonnes.
Pour en savoir plus sur les requêtes qui fonctionnent le mieux avec le moteur en colonnes, savoir si le moteur en colonnes a été utilisé par une requête et comment il a été utilisé, consultez la section Vérifier l'utilisation du moteur en colonnes à l'aide de EXPLAIN
.
Utiliser le moteur en colonnes
Pour utiliser le moteur de colonnes dans une instance AlloyDB, procédez comme suit:
Activez le moteur sur l'instance.
L'activation du moteur est une opération ponctuelle qui nécessite un redémarrage.
Ajoutez des colonnes au magasin de colonnes.
Pour ajouter des colonnes au magasin de colonnes, utilisez l'une des méthodes suivantes:
Utilisez la colonnerisation automatique, qui analyse votre charge de travail et ajoute automatiquement des colonnes.
Ajoutez les colonnes manuellement en fonction de vos connaissances sur la charge de travail sur les bases de données de l'instance.
Vous pouvez suivre le contenu du magasin de colonnes à l'aide de la vue
g_columnar_relations
. Une fois les colonnes ajoutées, vous pouvez utiliser l'instructionEXPLAIN
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 la section Configurer le moteur en colonnes.
Données que vous pouvez ajouter au store de colonnes
Les types et sources de données que vous pouvez utiliser lorsque vous ajoutez des colonnes au magasin de colonnes sont limités.
Types de données acceptés
Le moteur de colonnes n'est compatible qu'avec 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
Le moteur de colonnes ignore toute tentative d'ajout manuel de colonnes contenant des types de données non compatibles au magasin de colonnes.
Sources de données non compatibles
Le moteur de colonnes n'est pas compatible avec les tables ni les vues matérialisées avec les attributs suivants comme sources de données:
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 indice, l'optimiseur AlloyDB peut choisir d'utiliser un stockage par ligne.
- Les colonnes ajoutées manuellement au magasin de colonnes ne sont pas automatiquement supprimées. Pour forcer la suppression des colonnes ajoutées manuellement, utilisez
google_columnar_engine_drop()
sur votre instance. - La colonnerisation 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 la page Types de données acceptés.
Les mises à jour fréquentes des lignes invalident les données sous forme de 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
ettotal_block_count
dans g_columnar_relations pour vérifier si votre table ou votre vue est affectée. Si vous modifiez fréquemment votre table ou votre vue, ou si vous le faites en grande quantité, la valeurinvalid_block_count
sera élevée.
Étape suivante
Configurez le moteur de données en colonnes sur AlloyDB Omni.
Découvrez comment accélérer les requêtes analytiques à l'aide du moteur en colonnes AlloyDB.