Simple Science

La science de pointe expliquée simplement

# Informatique# Bases de données# Apprentissage automatique

Améliorer les performances des requêtes paramétriques avec l'apprentissage automatique

Une nouvelle méthode accélère les requêtes de base de données en utilisant des techniques d'apprentissage automatique.

― 8 min lire


Optimisation de requêtesOptimisation de requêtesde nouvelle générationdonnées.l'efficacité des requêtes de base deL'apprentissage automatique booste
Table des matières

Dans le monde des bases de données, quand on exécute des requêtes, on veut souvent qu'elles soient le plus rapides possible. C'est particulièrement vrai pour ce qu'on appelle les requêtes paramétriques, qui ont des structures similaires mais des valeurs d'entrée spécifiques différentes. Comme ces requêtes sont exécutées fréquemment, améliorer leurs performances peut apporter des bénéfices significatifs.

Beaucoup de systèmes qui aident à optimiser l'exécution des requêtes s'appuient sur des méthodes traditionnelles. Cependant, ces anciennes méthodes peuvent parfois être inexactes, entraînant des performances plus lentes que prévu. Pour résoudre ce problème, des chercheurs ont développé de nouvelles approches utilisant l'apprentissage automatique pour améliorer l'optimisation des requêtes.

Cet article discute d'une nouvelle façon d'accélérer les requêtes paramétriques en utilisant un mélange d'apprentissage automatique et de techniques de planification plus intelligentes. L'objectif est de rendre les bases de données plus rapides et plus efficaces pour gérer les requêtes courantes.

Qu'est-ce que les Requêtes Paramétriques ?

Pour comprendre la nécessité d'optimisation dans les bases de données, il faut d'abord savoir ce que sont les requêtes paramétriques. Ce sont un ensemble de demandes à une base de données qui suivent la même structure mais utilisent différentes valeurs pour certains paramètres. Par exemple, si tu avais une requête qui cherchait des infos sur des livres, une version pourrait chercher "Harry Potter", tandis qu'une autre pourrait chercher "Le Hobbit". Les deux requêtes utilisent la même structure sous-jacente mais diffèrent dans leurs entrées spécifiques.

Comme ce type de requêtes est utilisé si souvent, optimiser leur traitement peut améliorer considérablement la vitesse. Toutefois, les systèmes traditionnels qui gèrent les requêtes SQL peuvent avoir du mal, prenant un temps fou à planifier comment exécuter chaque requête efficacement.

Le Défi des Optimiseurs Traditionnels

Les optimiseurs de requêtes traditionnels fonctionnent en estimant combien de ressources une requête va consommer avant de l'exécuter. Ils utilisent ces estimations pour déterminer la meilleure façon d'exécuter la requête. Malheureusement, ces estimations peuvent être fausses, ce qui entraîne des performances de requêtes moins qu'idéales.

De nombreux efforts pour améliorer l'optimisation des requêtes ont été réalisés par le passé. Toutefois, ils viennent souvent avec des limites. Par exemple, certaines méthodes sont lentes, d'autres ne sont pas cohérentes selon les cas d'utilisation, et beaucoup comptent encore sur ces modèles de coûts inexactes.

Cela a entraîné une poussée pour de nouvelles méthodes qui adoptent une approche différente pour optimiser les requêtes de base de données.

Une Nouvelle Approche : Optimisation Basée sur l'Apprentissage

La méthode proposée utilise l'apprentissage automatique pour prédire les meilleures façons d'exécuter des requêtes paramétriques. Contrairement aux systèmes traditionnels, qui s'appuient beaucoup sur des estimations, ce nouveau système évalue comment les plans potentiels se comporteraient en se basant sur des données d'exécution réelles. En faisant cela, il peut s'adapter aux changements et améliorer continuellement ses recommandations.

Le cœur de cette nouvelle approche tourne autour de ce qu'on appelle l'Évolution du Compte de Lignes (ECL). Cette technique aide à générer des plans de requêtes potentiellement meilleurs en apportant de petits ajustements aux estimations fournies par les optimiseurs traditionnels. Essentiellement, elle ajuste les paramètres pour découvrir des plans qui pourraient mieux performer.

Comment Ça Marche ?

Générer des Plans Candidats

La première étape de cette nouvelle méthode est de générer des plans potentiels pour exécuter une requête. Cette étape implique de créer un ensemble de plans candidats en partant du principe que les optimiseurs traditionnels pourraient manquer certaines opportunités d'accélération.

L'ECL crée plusieurs variations des plans par défaut élaborés par l'optimiseur traditionnel en apportant des changements aléatoires à leurs estimations de cardinalité. Ces changements reposent sur l'idée que les estimations initiales fournies par l'optimiseur traditionnel peuvent souvent être fausses.

En générant une variété de plans, le système augmente les chances qu'au moins un des plans soit nettement plus rapide. Cette étape permet au système d'explorer de nombreuses options potentielles au lieu de s'en tenir au plan initial proposé par les méthodes traditionnelles.

Entraînement sur les Données d'Exécution

Une fois les plans candidats générés, ils sont exécutés pour recueillir des données de performance réelles. Cette exécution aide à construire un ensemble de données complet que le modèle d'apprentissage automatique peut utiliser pour l'entraînement.

Ces données permettent au modèle d'apprendre à partir des résultats de performance réels plutôt que de se fier uniquement à des estimations. Le modèle se concentre sur l'identification du plan le plus rapide en fonction des temps d'exécution historiques, améliorant ainsi ses prédictions avec le temps.

De plus, cette approche permet au modèle de comprendre comment différents paramètres affectent la performance des requêtes, favorisant une solution d'optimisation plus robuste.

Faire des Prédictions

Le modèle entraîné prédit ensuite le meilleur plan pour de nouvelles instances de requêtes. Quand une nouvelle requête arrive, le système vérifie si un modèle approprié est disponible pour ce type de requête spécifique. Si c'est le cas, il utilise le modèle pour suggérer le meilleur plan à l'optimiseur traditionnel.

Cependant, si le modèle est incertain quant à sa prédiction, il revient à utiliser le plan de l'optimiseur traditionnel. Ce mécanisme de secours est crucial pour s'assurer que la performance ne décline pas quand le modèle d'apprentissage automatique fait face à des situations nouvelles ou inconnues.

Résultats et Avantages

Les résultats de la mise en œuvre de cette nouvelle méthode montrent des améliorations significatives dans les temps d'exécution des requêtes. Dans plusieurs tests, la nouvelle approche a montré des gains de vitesse par rapport aux méthodes traditionnelles, doublant souvent la performance dans certains cas.

Une des découvertes intéressantes est que les plans candidats générés avec l'ECL étaient souvent meilleurs que ceux trouvés par les optimiseurs traditionnels. De plus, l'utilisation de données d'exécution réelles pour entraîner le modèle a minimisé le risque de rencontrer des régressions de performance, c'est-à-dire quand un système fonctionne moins bien qu'avant.

La nouvelle méthode se révèle aussi efficace en termes de ressources nécessaires pour l'entraînement. Elle montre qu'avec des données d'entraînement limitées, des gains de performance robustes peuvent être réalisés, permettant une intégration plus rapide et plus efficace dans les systèmes existants.

Importance de la Robustesse

Un des aspects clés de cette nouvelle approche est son accent sur la robustesse. Les systèmes traditionnels risquent souvent d'échouer lorsqu'ils sont confrontés à des requêtes qui diffèrent de celles sur lesquelles ils ont été formés ou modélisés.

Grâce au mécanisme de secours, cette nouvelle méthode vise à garantir que si le modèle d'apprentissage automatique n'a pas confiance dans ses prédictions, il se rabattra sur le plan traditionnel plus conservateur, maintenant ainsi les niveaux de performance. Cette capacité à s'adapter aux changements et aux incertitudes est vitale pour un déploiement dans des environnements réels.

Considérations Futures

Le développement et l'implémentation de cette nouvelle méthode d'optimisation basée sur l'apprentissage ouvrent la porte à de nombreuses possibilités pour améliorer la performance des bases de données. La recherche future pourra approfondir la façon dont les requêtes sont optimisées, peut-être en intégrant d'autres facteurs ou en explorant d'autres avancées dans les techniques d'apprentissage automatique.

À mesure que davantage de bases de données adoptent cette technologie, les insights recueillis pourront mener à des améliorations dans divers systèmes, améliorant finalement leur vitesse et leur fiabilité.

En conclusion, en combinant efficacement l'apprentissage automatique avec des techniques de planification de requêtes innovantes, cette nouvelle approche traite de nombreux problèmes des méthodes traditionnelles. Elle a le potentiel de rendre les bases de données nettement plus efficaces pour gérer les requêtes paramétriques, ce qui se traduit par moins de délais et une meilleure expérience pour les utilisateurs.

Source originale

Titre: Kepler: Robust Learning for Faster Parametric Query Optimization

Résumé: Most existing parametric query optimization (PQO) techniques rely on traditional query optimizer cost models, which are often inaccurate and result in suboptimal query performance. We propose Kepler, an end-to-end learning-based approach to PQO that demonstrates significant speedups in query latency over a traditional query optimizer. Central to our method is Row Count Evolution (RCE), a novel plan generation algorithm based on perturbations in the sub-plan cardinality space. While previous approaches require accurate cost models, we bypass this requirement by evaluating candidate plans via actual execution data and training an ML model to predict the fastest plan given parameter binding values. Our models leverage recent advances in neural network uncertainty in order to robustly predict faster plans while avoiding regressions in query performance. Experimentally, we show that Kepler achieves significant improvements in query runtime on multiple datasets on PostgreSQL.

Auteurs: Lyric Doshi, Vincent Zhuang, Gaurav Jain, Ryan Marcus, Haoyu Huang, Deniz Altinbüken, Eugene Brevdo, Campbell Fraser

Dernière mise à jour: 2023-10-18 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2306.06798

Source PDF: https://arxiv.org/pdf/2306.06798

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires