Conseils de dépannage liés aux performances d'Actian Vector dans Hadoop
Actian Vector a été rebaptisé Actian Analytics Engine en 2026.
Actian Vector et Vector dans Hadoop sont des outils puissants permettant d'exécuter efficacement des requêtes. Cependant, la plupart des utilisateurs de plateformes d'analyse de données plateformes à optimiser les performances afin d'obtenir requête progressives requête .
Support Service et Support d'Actian collabore avec nos clients afin d'identifier les points communs à examiner lorsqu'il s'agit d'améliorer requête . La plupart de nos recommandations s'appliquent aussi bien à Actian Vector (nœud unique) qu'à Actian Vector dans Hadoop (VectorH, un cluster à plusieurs nœuds sur Hadoop).
Actian a récemment publié une présentation détaillée des aspects techniques et des bonnes pratiques destinées à aider tous les utilisateurs de Vector et de VectorH à optimiser les performances, en mettant particulièrement l'accent sur VectorH.
Contrairement requête SQL sur Hadoop (Hive, Impala, Spark SQL, etc.), VectorH est un véritable SGBDR en colonnes, de type MPP, SGBDR toutes les fonctionnalités du langage SQL, transactions acid c'est-à-dire support mises à jour et support suppressions sur place), des options de sécurité robustes intégrées, etc. Cette flexibilité permet à VectorH d'être optimisé pour des charges de travail et des environnements complexes.
Notez que Vector et VectorH sont tout à fait capables d'exécuter des requêtes de manière efficace sans recourir à aucune des techniques examinées. Toutefois, ces techniques s'avéreront utiles pour les charges de travail exigeantes et les environnements Hadoop très sollicités, et vous permettront de tirer le meilleur parti de votre plateforme.
Notre collaboration avec nos clients nous a permis de constater que les aspects suivants doivent être examinés afin d'optimiser les performances.
Partitionnez vos tables
Un aspect très important à prendre en compte lors de la conception du schéma d'un système de traitement massivement parallèle (MPP) tel que VectorH est la manière de répartir les données au sein d'un cluster afin d'équilibrer requête de manière homogène sur l'ensemble des ressources disponibles. Si vous ne partitionnez pas explicitement vos tables lors de leur création, VectorH créera par défaut des tables non partitionnées ; toutefois, pour optimiser les performances, vous devriez toujours partitionner les tables les plus volumineuses de votre base de données.
Éviter les distorsions dans les données
Un déséquilibre des données, caractérisé par le fait qu'un petit nombre de machines contient beaucoup plus de données que la plupart des autres, est appelé « asymétrie des données ». L'asymétrie des données peut entraîner de graves problèmes de performances pour les requêtes, car la machine contenant une quantité disproportionnée de données détermine la requête globale requête et peut devenir un goulot d'étranglement.
Statistiques manquantes
distribution des données sont indispensables à l'élaboration d'un bon requête . En l'absence de statistiques, requête VectorH émet certaines hypothèses par défaut, notamment sur le nombre de lignes qui correspondront lors de la jointure de deux tables. Lorsque l'on traite des ensembles de données volumineux, il est nettement préférable de disposer de données réelles sur la répartition effective des données plutôt que de se fier à ces estimations.
Tri des données
Le modèle relationnel de traitement n'exige pas que les données soient triées sur le disque ; à la place, on utilise une clause ORDER BY dans une requête nécessite que les données soient renvoyées dans un ordre particulier.
Cependant, grâce à l'utilisation d'index dits « MinMax » (gérés automatiquement au sein de la structure d'une table sans utilisateur ), VectorH est capable d'exploiter des données triées pour éliminer plus efficacement les blocs de données superflus du traitement et ainsi accélérer requête , lorsque celles-ci comportent une clause WHERE ou une restriction de jointure sur une colonne selon laquelle la table est triée.
Utilisation des types de données les plus adaptés
Comme pour toute base de données, le choix du type de données adapté à votre schéma et à vos requêtes peut avoir un impact considérable sur les performances de VectorH. Évitez donc de recourir systématiquement à la taille maximale des colonnes par simple commodité. Réfléchissez plutôt aux valeurs les plus élevées que vous êtes susceptible de stocker dans une colonne de type VARCHAR, par exemple, et dimensionnez vos colonnes en conséquence.
Comme VectorH compresse très efficacement les données des colonnes, la création de colonnes bien plus volumineuses que nécessaire n’a qu’un impact minime sur la taille des tables de données. Les colonnes VARCHAR étant stockées en interne sous forme de chaînes terminées par un caractère nul, la taille de la colonne VARCHAR n’a en réalité aucun effet sur les temps requête . En revanche, elle influe sur les temps de communication avec l’interface utilisateur, car les données sont stockées à la longueur maximale définie une fois qu’elles ont quitté le moteur. Notez toutefois que le stockage de données intrinsèquement numériques (identifiants, horodatages, etc.) sous forme de données VARCHAR est très préjudiciable au système, car VectorH peut traiter les données numériques bien plus efficacement que les données de type caractère.
Gestion de la mémoire pour les modifications mineures
VectorH dispose d'un mécanisme en instance de brevet permettant de traiter efficacement de nombreuses modifications mineures apportées aux données, appelé « Positional Delta Trees » (PDT). Ce mécanisme permet également d'utiliser des instructions de mise à jour et de suppression sur des données stockées dans un système de fichiers en ajout seul, tel que HDFS.
Toutefois, si un grand nombre d’instructions UPDATE, INSERT ou DELETE sont exécutées, l’utilisation de la mémoire par les structures PDT peut augmenter rapidement. Si de grandes quantités de mémoire sont utilisées, le système peut devenir plus lent à traiter les modifications futures et, à terme, la mémoire finira par être épuisée. La gestion de cette mémoire est assurée automatiquement ; toutefois, utilisateur également émettre directement une instruction « combine », qui fusionnera les modifications issues de la PDT avec la table principale dans le cadre d’un processus appelé « propagation des mises à jour ». Plusieurs déclencheurs poussent le système à effectuer automatiquement cette maintenance en arrière-plan (tels que des seuils relatifs à la mémoire totale utilisée pour les PDT ou au pourcentage de lignes mises à jour) ; ce processus est donc généralement transparent pour utilisateur.
Optimisation pour simultanéité
VectorH est conçu pour permettre à une même requête s'exécuter en utilisant autant de threads d'exécution parallèles que possible afin d'atteindre des performances maximales. Cependant, ce qui est peut-être atypique pour un système MPP, il est également conçu pour permettre simultanéité forte simultanéité une allocation démocratique des ressources lorsque le système est soumis à un nombre élevé de requêtes. VectorH gère ces deux situations avec ses paramètres par défaut, mais peut être ajusté pour répondre aux besoins de l'application (par exemple, si l'on souhaite favoriser un débit plus élevé de requêtes gourmandes en ressources en limitant le nombre maximal de ressources qu'une requête acquérir).
Le nombre de connexions simultanées (64 par défaut) qu'une instance VectorH donnée peut accepter est régi par le paramètre `connect_limit`, enregistré dans le fichier `config.dat` et géré via l'utilitaire CBF. Cependant, le nombre de connexions est généralement supérieur à celui des requêtes en cours d'exécution ; comment les ressources sont-elles donc réparties entre les requêtes simultanées ?
Par défaut, VectorH tente d'équilibrerrequête requête requête . Les paramètres clés permettant cet équilibrage sont les suivants :
- Le nombre de processeur dans le cluster VectorH.
- Nombre de threads qu'une requête utiliser.
- Nombre de threads attribués à une requête par le système.
- Nombre de requêtes en cours d'exécution dans le système.
Résumé
Vector et VectorH sont tout à fait capables d'exécuter des requêtes de manière efficace sans recourir aux techniques et astuces décrites ici. Cependant, plus votre charge de travail est exigeante, que ce soit en termes de volumes de données, requête ou desimultanéité utilisateur simultanéité, plus la mise en œuvre de certaines des astuces présentées dans le rapport complet vous permettra de tirer le meilleur parti de votre plateforme.