Optimiseur de requête
Dans le domaine des systèmes de gestion de bases de données, les optimiseurs de requêtes jouent un rôle central pour garantir une exécution efficace des requêtes de base de données. Optimiseur de requête, un composant deIBM® watsonx.data, améliore les performances des requêtes traitées parPresto (C++). Si l’optimisation est jugée réalisable, la requête est réécrite ; sinon, l'optimisation native du moteur est prioritaire.
Optimiseur de requête n'est pas pris en charge pourPresto (Java ).
Danswatsonx.data,Optimiseur de requête fonctionne comme un composant chargé d’optimiser les requêtes. Il accepte une requête SQL standard en entrée et génère un équivalent SQL optimisé, conçu pour une exécution améliorée parPresto (C++). Dans les cas où l'optimisation n'est pas réalisable, le système revient à l'utilisation de la requête d'origine.
Optimiseur de requête apparaît comme un ajout précieux auwatsonx.data, permettant aux utilisateurs d'optimiser leurs requêtes et d'obtenir des performances améliorées de leurs moteurs.
Tu peux voir Activation du gestionnaire d'optimiseur de requêtes pour plus d’informations.
Les avantages de Optimiseur de requête
La fonctionnalité d'optimisation des requêtes deDb2 est exploité danswatsonx.data et les facteurs clés pris en compte comprennent :
-
watsonx.data les usagesDb2 comme l'optimisation des requêtes perfectionnée depuis des décennies pour des performances optimales.
Tirant parti d'un développement approfondi et de la fonctionnalité d'optimisation des requêtes deDb2 analyse vos requêtes SQL et génère des plans d'exécution optimaux. Les principaux facteurs pris en compte comprennent :
- Statistiques précises : RUNSTATS rassemble des estimations de distribution de données et de cardinalité pour des décisions éclairées.
- Index et contraintes bien conçus : ceux-ci guident l'optimiseur vers des chemins d'accès efficaces et garantissent l'intégrité des données.
- Techniques avancées pour les requêtes complexes : l'optimisation basée sur les coûts et l'estimation de la cardinalité garantissent un traitement efficace.
-
Performances de requête améliorées :Optimiseur de requête optimise efficacement les requêtes, conduisant à des améliorations significatives des performances.
-
Intégration transparente:Optimiseur de requête s'intègre parfaitement à l'existantwatsonx.data infrastructure, garantissant un processus d’adoption fluide.
-
Optimisation flexible :Optimiseur de requête fonctionne de manière flexible car les utilisateurs peuvent activer et désactiver la fonctionnalité au niveau global ou au niveau de la session.
-
L' optimiseur de requêtes prend en charge les tables Hive et Iceberg.
Limitation de Optimiseur de requête
- Optimiseur de requête seul supportPresto C++.
- Lorsque les métastores sont synchronisés, tous les schémas et tables sont en majuscules. Par exemple,
"catalog".SCHEMA.TABLE. - Les requêtes de nom en trois parties nécessitent des guillemets autour du nom du catalogue en minuscules (
"catalog".SCHEMA.TABLE). Dans le cas contraire, la requête renvoie une erreur. - Pour des performances optimales, vous devez définir des contraintes telles que NOT NULL, la clé primaire et la clé étrangère dans
Query Optimizer engineune fois les tables synchronisées. - Après avoir activé le Optimiseur de requête, métadonnées pour tous les catalogues actuellement connectés à n'importe quelPresto Le moteur sera automatiquement synchronisé avec le moteur de l'optimiseur. Cependant, les ajouts ultérieurs de catalogues ou de schémas après l'activation de l'optimiseur nécessiteront une synchronisation manuelle des métadonnées par l'utilisateur. Faire référence à Synchronisation de l'optimiseur de requêtes pour des instructions détaillées.
- Si un catalogue ou un schéma était inaccessible ou corrompu pendant Optimiseur de requête déploiement, ses métadonnées seront absentes dans le moteur de l'optimiseur. Pour garantir que tous les objets sont présents comme prévu, les utilisateurs doivent utiliser les commandes décrites dans Synchronisation de l'optimiseur de requêtes pour valider manuellement et potentiellement synchroniser les métadonnées manquantes.
- Optimiseur de requête la fonctionnalité dépend de la présence d'au moins un actifPresto Moteur C++ au sein de votreWatsonx.data exemple. Tentative de supprimer le dernier restantPresto Moteur C++ pendant Optimiseur de requête est activé, cela déclenchera une désactivation du Optimiseur de requête lui-même. Une invite de confirmation sera présentée dans l'interface utilisateur pour éviter une désactivation accidentelle.
- Optimiseur de requête ne prennent pas en charge les vues.
- Les colonnes décimales et flottantes de la liste de projection peuvent être échangées et entraîner une incompatibilité dans le type de données.
- Certaines requêtes (full external join, anti join) ne renvoient pas le résultat correct.
- Les caractères spéciaux dans l'identifiant ne fonctionnent pas correctement.
- Query Optimizer ne prend actuellement en charge que les déclarations
SELECT.