Résolvez les problèmes courants que vous pouvez rencontrer lorsque vous utilisez le moteur de données en colonnes AlloyDB pour PostgreSQL.
Vous avez ajouté des colonnes référencées au moteur de données en colonnes, mais votre requête SELECT ne les utilise pas
Description : Pour que vous puissiez utiliser le moteur de données en colonnes, toutes les colonnes référencées dans un fragment de requête, telles que les jointures et les analyses, doivent se trouver dans le store orienté colonnes. Si une colonne référencée ne se trouve pas dans le moteur de données en colonnes, le fragment de requête est par défaut stocké dans le store orienté lignes.
Dans ce contexte, un fragment de requête est une requête pouvant comporter plusieurs nœuds d'analyse. Par exemple, le fragment de requête peut comporter deux nœuds d'analyse pour une jointure. Un nœud d'analyse peut utiliser un format non colonnaire, tandis qu'un autre nœud d'analyse peut utiliser un format colonnaire. Toutes les colonnes d'un nœud d'analyse (colonnes de filtre et colonnes de projection) doivent être renseignées dans le format en colonnes. De même, une requête peut comporter certaines partitions en colonnes et d'autres non.
Correction recommandée : Pour vérifier que toutes les colonnes référencées se trouvent dans le moteur de données en colonnes, procédez comme suit :
Vérifiez les types de données acceptés.
Assurez-vous qu'AlloyDB est compatible avec tous les types de données des colonnes que vous prévoyez d'utiliser avec le moteur de données en colonnes. Pour en savoir plus, consultez Types de données acceptés.
Vérifiez les opérateurs compatibles.
Assurez-vous qu'AlloyDB est compatible avec les opérateurs sur les types de données du moteur de données en colonnes. Pour en savoir plus sur les opérateurs compatibles, consultez Types de requêtes qui bénéficient du moteur de données en colonnes.
Exécutez la commande
EXPLAIN COLUMNAR_ENGINE.Pour identifier et résoudre les problèmes qui empêchent des requêtes spécifiques d'utiliser le moteur de données en colonnes, exécutez la commande
EXPLAIN COLUMNAR_ENGINEsuivante :EXPLAIN (COLUMNAR_ENGINE, ANALYZE) SELECT column1, column2 FROM my_table WHERE column3 > 100;
Vous ne pouvez pas ajouter ni supprimer de tables dans le moteur de données en colonnes
Description : Vous souhaitez ajouter ou supprimer des tables dans le moteur de données en colonnes.
Correction recommandée : Vérifiez vos autorisations utilisateur. Vous ne pouvez ajouter ou supprimer des tables dans le moteur de données en colonnes que si vous disposez de droits de lecture sur la table.
La taille des données en colonnes dépasse la mémoire allouée
Description : Vous rencontrez des problèmes de performances ou de traitement des données lorsque la taille de vos données en colonnes dépasse l'allocation de mémoire pour le moteur de données en colonnes.
Correction recommandée : Pour des performances optimales, utilisez la fonctionnalité de recommandation d'AlloyDB afin d'identifier les tables et les colonnes optimales pour alimenter le moteur de données en colonnes.
Si les tables et les colonnes recommandées dépassent la mémoire physique du moteur de données en colonnes, les données en colonnes excédentaires utilisent une partie de la couche de cache ultrarapide. Les requêtes portant sur les données restantes de la table, qui ne se trouvent pas dans le moteur de données en colonnes, utilisent de manière transparente le store orienté lignes.
Vous pouvez également ajuster l'allocation de mémoire et de cache de stockage du moteur de données en colonnes. Le moteur de données en colonnes est provisionné avec une taille par défaut pour la mémoire et le cache de stockage. Vous pouvez configurer manuellement le cache de mémoire et de stockage. Pour modifier la quantité de mémoire ou de cache de stockage allouée au moteur de données en colonnes, consultez Configurer la mémoire pour le moteur de données en colonnes.
Les requêtes sur les tables Apache Iceberg échouent ou n'utilisent pas le moteur de données en colonnes
Description : Les requêtes sur les tables Apache Iceberg créées à l'aide de la méthode d'accès aux tables USING iceberg échouent avec des erreurs ou reviennent à des analyses directes.
Correction recommandée :
- Assurez-vous que l'option
google_columnar_engine.enable_iceberg_readsest définie suronsur l'instance et que l'instance a redémarré. Pour en savoir plus, consultez la page Configurer des indicateurs de base de données. - Vérifiez que l'agent de service de votre cluster AlloyDB dispose du rôle Lecteur des objets Storage (
roles/storage.objectViewer) sur le bucket Cloud Storage contenant vos données et métadonnées Iceberg, et si vous utilisez le catalogue d'environnements d'exécution Lakehouse, du rôle Lecteur BigLake (roles/biglake.viewer) sur le projet hébergeant votre catalogue BigLake. - Pour vérifier l'exécution en colonnes, exécutez
EXPLAIN (ANALYZE, COSTS OFF)et confirmez que le plan contient un nœudCustom Scan (ColumnarScan). Pour connaître les étapes de dépannage détaillées, consultez Résoudre les problèmes d'accès direct à Iceberg.