Modèles de coût adaptatifs pour l'optimisation des requêtes
Une nouvelle approche améliore l'exécution des requêtes de base de données avec des ajustements de coût dynamiques.
Nikita Vasilenko, Alexander Demin, Denis Ponomaryov
― 8 min lire
Table des matières
Dans le monde des bases de données, quand un utilisateur lance une requête, le système doit trouver le meilleur moyen de l'exécuter. Ça implique de choisir un plan parmi des tas d'options, qui peuvent parfois se chiffrer en milliers. La méthode que les optimiseurs utilisent pour choisir ces plans repose beaucoup sur un modèle de coût. En gros, le but est d'estimer combien de temps une requête prendra en fonction de divers facteurs, permettant au système de sélectionner le plan le plus efficace pour l'exécution.
Un modèle de coût traditionnel prend en compte différents facteurs, notamment la puissance CPU et l'espace disque nécessaires. Ces valeurs sont généralement fixées par quelqu'un qui comprend comment la base de données fonctionne, mais elles peuvent changer selon le comportement des utilisateurs et la charge de travail. De ce fait, utiliser un ensemble de valeurs fixes ne mène pas toujours à la meilleure performance.
Pour relever ce défi, on propose un Modèle de Coût Adaptatif (MCA). Ce modèle surveille en continu comment les requêtes sont exécutées et ajuste les paramètres de coût en temps réel. En faisant ça, il peut optimiser l'utilisation des ressources comme le CPU et l'I/O disque sans avoir besoin d'un retour constant d'un expert en bases de données. Cette approche permet au système de réagir aux demandes changeantes, ce qui améliore la performance globale.
Bases de l'Optimisation de Requêtes
Quand une base de données traite une requête SQL, plusieurs plans d'exécution peuvent être créés pour cette requête, rendant difficile la recherche de celui qui s'exécutera le plus rapidement. Un modèle de coût aide en fournissant un moyen d'estimer combien de temps chaque plan prendra. La précision de ce modèle de coût est cruciale car elle affecte directement le plan choisi par l'optimiseur. Si le modèle est faux, l'optimiseur peut sélectionner un plan qui semble bien sur le papier mais qui fonctionne mal en réalité.
Un optimiseurs typique a trois tâches principales : estimer combien d'enregistrements sortiront d'un certain plan, estimer combien de ressources CPU et disque seront utilisées, et ensuite trouver un plan qui minimise ces coûts. Cependant, les méthodes traditionnelles peuvent avoir du mal, surtout avec des requêtes complexes avec plusieurs jointures, car les estimations de coût peuvent être très inexactes.
Récemment, certains ont commencé à utiliser des techniques d'apprentissage machine pour apprendre des exécutions de requêtes passées. Bien que ces méthodes puissent améliorer les performances dans certaines situations, elles nécessitent souvent une charge de travail stable ou risquent de nécessiter un réentrainement complet face à des données ou des modèles de requêtes changeants.
L'idée principale de notre approche est qu'en ajustant les paramètres liés aux coûts CPU et disque de manière dynamique, on peut améliorer la capacité de l'optimiseur à trouver les meilleurs plans.
Problèmes avec les Modèles de Coûts Traditionnels
Dans les modèles de coût standard, un administrateur de base de données définit manuellement les paramètres liés aux coûts. Ça peut être compliqué car trouver les bons paramètres nécessite une profonde compréhension de la base de données et de sa charge de travail. De plus, l'efficacité de ces réglages de paramètres peut se dégrader avec le temps à mesure que les charges de travail changent, rendant nécessaire de revisiter fréquemment les paramètres.
Une méthode alternative consiste à exécuter un ensemble spécifique de requêtes de calibration pour collecter des statistiques, qui sont ensuite utilisées pour ajuster les paramètres de coût. Cependant, exécuter ces requêtes de calibration peut être lourd et ne pas représenter fidèlement les charges de travail réelles.
Notre modèle de coût adaptatif (MCA) propose une solution en utilisant des techniques d'apprentissage machine qui permettent des ajustements automatiques basés sur les statistiques d'exécution de requêtes. Il y a deux composants principaux dans le MCA : un qui se concentre sur les paramètres de coût associés à l'I/O disque et l'autre sur les coûts CPU.
Paramètres liés au Disque
Le MCA calcule le coût associé à l'accès disque en tenant compte de l'état du cache mémoire de la base de données. Quand une requête est exécutée, le MCA vérifie combien de données nécessaires sont déjà en mémoire et combien doivent encore être récupérées du disque. En collectant continuellement des statistiques sur l'utilisation des données, le MCA peut donner des estimations de coût plus précises.
Par exemple, si une table est principalement stockée dans le cache mémoire, le modèle peut prédire que l'accès sera plus rapide que s'il nécessite plusieurs lectures sur disque. Cette estimation dynamique est importante car elle réduit les erreurs dans les prédictions de coût de l'optimiseur.
Le modèle utilise également un ratio de succès, qui indique simplement combien de fois les données nécessaires pour une requête peuvent être trouvées en mémoire plutôt que sur disque. En estimant ce ratio de succès basé sur des données historiques, le MCA ajuste dynamiquement le coût d'accès aléatoire sur disque.
Paramètres liés au CPU
Alors que les modèles d'accès disque peuvent changer selon l'état de la base de données, les paramètres liés au CPU restent plus constants. Cependant, ils ont toujours besoin d'ajustements pour refléter avec précision la configuration matérielle actuelle et les conditions de la base de données.
Après l'exécution d'une requête, le MCA collecte des statistiques sur combien de temps diverses opérations prennent et combien d'enregistrements sont traités pour chaque opération. En comparant ce temps d'exécution réel avec le coût attendu calculé auparavant, le MCA peut continuellement affiner les paramètres de coût associés aux opérations CPU.
L'idée est de s'assurer que les coûts calculés correspondent de près au temps réel pris pour chaque opération. Cet ajustement continu aide à améliorer les décisions de l'optimiseur lors de la sélection des plans d'exécution.
Évaluation Expérimentale
Pour tester l'efficacité du MCA, on a réalisé des expériences en utilisant un benchmark commun appelé TPC-H, qui inclut une série de requêtes et de jeux de données standard. L'objectif principal était de voir si le MCA pouvait améliorer la corrélation entre les coûts estimés et les temps d'exécution réels, ainsi que d'observer l'impact sur la Latence globale des requêtes.
Les résultats ont montré que l'utilisation du MCA a significativement amélioré la corrélation entre les coûts prédits et les temps d'exécution réels, indiquant un modèle beaucoup plus précis. De plus, la latence d'exécution globale s'est également améliorée, suggérant que le MCA permet à l'optimiseur de sélectionner de meilleurs plans plus souvent.
Bien que toutes les requêtes n'aient pas bénéficié du MCA, on a remarqué une augmentation de performance pour beaucoup. Certaines requêtes lentes ont encore été freinées par des erreurs dans l'estimation du nombre d'enregistrements traités, ce qui souligne que même si le MCA améliore l'estimation des coûts, il ne résout pas tous les problèmes d'optimisation de requêtes.
Conclusion
Le modèle de coût adaptatif présenté ici s'avère être un outil utile pour ajuster dynamiquement les paramètres liés au CPU et au disque dans un optimiseur de base de données. Contrairement aux approches traditionnelles, le MCA ne nécessite pas de pré-entraînement ou de requêtes de calibration périodiques, ce qui le rend plus facile à mettre en œuvre dans des applications réelles. Il fournit une estimation des coûts plus précise en réagissant aux changements de charge de travail en temps réel, ce qui a été prouvé pour améliorer la performance des requêtes.
Dans de futurs travaux, il y a un potentiel à combiner le MCA avec des techniques visant à améliorer l'estimation de cardinalité, renforçant davantage les capacités de l'optimiseur. Les résultats obtenus jusqu'à présent soulignent l'importance d'ajuster dynamiquement les paramètres de coût, affirmant que cela peut conduire à des améliorations significatives de la latence des requêtes et de la performance de la base de données.
Titre: Adaptive Cost Model for Query Optimization
Résumé: The principal component of conventional database query optimizers is a cost model that is used to estimate expected performance of query plans. The accuracy of the cost model has direct impact on the optimality of execution plans selected by the optimizer and thus, on the resulting query latency. Several common parameters of cost models in modern DBMS are related to the performance of CPU and I/O and are typically set by a database administrator upon system tuning. However these performance characteristics are not stable and therefore, a single point estimation may not suffice for all DB load regimes. In this paper, we propose an Adaptive Cost Model (ACM) which dynamically optimizes CPU- and I/O-related plan cost parameters at DB runtime. By continuously monitoring query execution statistics and the state of DB buffer cache ACM adjusts cost parameters without the need for manual intervention from a database administrator. This allows for responding to changes in the workload and system performance ensuring more optimal query execution plans. We describe the main ideas in the implementation of ACM and report on a preliminary experimental evaluation showing 20\% end-to-end latency improvement on TPC-H benchmark.
Auteurs: Nikita Vasilenko, Alexander Demin, Denis Ponomaryov
Dernière mise à jour: 2024-09-25 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2409.17136
Source PDF: https://arxiv.org/pdf/2409.17136
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.