Cette page présente le moteur de données en colonnes proposé par AlloyDB pour PostgreSQL et explique comment l'utiliser.
Le moteur de données 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 store orienté colonnes contenant des données de tables et de vues matérialisées pour les colonnes sélectionnées, réorganisées dans un format orienté colonnes
Un moteur d'exécution et un planificateur de requêtes en colonnes qui permettent d'utiliser le store orienté colonnes dans les requêtes
Le moteur de données en colonnes peut être utilisé sur l'instance principale, une instance de pool de lecture ou les deux. Vous pouvez également utiliser l'organisation automatique des données en colonnes pour analyser votre charge de travail et remplir automatiquement le store orienté colonnes avec les colonnes qui offrent le meilleur gain de performances.
Pour que vous puissiez utiliser le moteur de données en colonnes avec une requête spécifique, toutes les colonnes des fragments de requête, telles que les jointures et les analyses, doivent se trouver dans le store orienté colonnes.
Par défaut, le moteur de données en colonnes est configuré pour utiliser 30 % de la mémoire de votre instance. Selon votre charge de travail, l'utilisation de la mémoire et le fait qu'un pool de lecture soit configuré ou non, vous pouvez choisir de réduire l'allocation de mémoire du moteur de données en 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 données en colonnes, consultez Afficher l'utilisation de la mémoire du store orienté colonnes. Pour modifier la taille de la mémoire utilisée par le store orienté colonnes, consultez Configurer la taille du store orienté colonnes. 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 mémoire du store orienté colonnes.
Types de requêtes qui bénéficient du moteur de données en colonnes
Certaines requêtes peuvent bénéficier du moteur de données en colonnes. Voici une liste des opérations et des modèles de requête associés qui bénéficient le plus du moteur de données 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 plus grande table ou vue matérialisée.
- Il utilise des expressions telles que
LIKE
,SUBSTR
ou TRIM.
- Il comporte des filtres sélectifs, tels que les clauses
Fonctions d'agrégation
- Ils n'utilisent que les expressions suivantes :
SUM
,MIN
,MAX
,AVG
etCOUNT
. - Ils se trouvent au début de la requête d'une analyse par colonne.
- Elles ne sont pas groupées ou sont groupées par colonnes.
- Ils n'utilisent que les expressions suivantes :
ORDER-BY
etSORT
: uniquement lorsqueORDER-BY
ouSORT
figurent dans les résultats d'analyse des colonnes auxquelles le moteur par colonne a accès.LIMIT
: uniquement si l'opérateur se trouve au début de la requête d'une analyse par colonne 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 par colonne.
Pour en savoir plus sur les requêtes qui fonctionnent le mieux avec le moteur de données en colonnes, sur l'utilisation éventuelle du moteur de données en colonnes par une requête et sur la façon dont il a été utilisé, consultez Vérifier l'utilisation du moteur de données 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 :
Activez le moteur sur l'instance.
L'activation du moteur est une opération unique qui nécessite un redémarrage.
Ajoutez des colonnes au store orienté colonnes.
Pour ajouter des colonnes au store orienté colonnes, utilisez l'une des méthodes suivantes :
Utilisez l'organisation automatique des données en colonnes, qui analyse votre charge de travail et ajoute automatiquement des colonnes.
Ajoutez les colonnes manuellement en fonction de votre connaissance de la charge de travail sur les bases de données de l'instance.
Vous pouvez suivre le contenu du store orienté 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 données en colonnes dans les requêtes SQL.
Pour obtenir des instructions détaillées sur l'utilisation du moteur de données en colonnes, consultez Configurer le moteur de données en colonnes.
Données que vous pouvez ajouter au store orienté colonnes
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 store orienté colonnes.
Types de données acceptés
Le moteur de données en 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 de données en colonnes ignore toute tentative d'ajout manuel de colonnes comportant des types de données non compatibles au store orienté colonnes.
Sources de données non compatibles
Le moteur de données 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 store de lignes.
- Les colonnes ajoutées manuellement au store orienté colonnes ne sont pas supprimées automatiquement. Pour forcer la suppression des colonnes ajoutées manuellement, utilisez
google_columnar_engine_drop()
sur votre instance. - L'organisation automatique des données en colonnes peut ajouter et supprimer des colonnes de manière dynamique en fonction de l'utilisation des requêtes.
- Le moteur de données en 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.
Des mises à jour fréquentes des lignes invalident les données en colonnes. Pour valider une table ou une vue matérialisée dans le store orienté colonnes, vous pouvez réduire la fréquence de mise à jour ou planifier des actualisations plus fréquentes du moteur de données 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 sont concernées. Si vous apportez fréquemment des modifications à votre table ou à votre vue, ou si ces modifications sont conséquentes, la valeurinvalid_block_count
sera élevée.
Étapes suivantes
Configurer 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.