• Aucun résultat trouvé

Méthodes basées sur une correction au niveau intra-opérateurs

2.2 Approche d’optimisation basée sur des estimations en points singuliers

2.2.2 Méthodes basées sur une correction au niveau intra-opérateurs

Les méthodes dans cette classe affinent la granularité de la modification de plans d’exécution. Elles permettent de corriger un plan pendant l’exécution d’un opérateur. Les statistiques sont collectées après qu’un bloc de tuples soit traité. Un bloc peut être constitué d’un ou plusieurs tuples. Dans cette perspective, les méthodes suivantes ont été proposées : le routage de tuples [AH00], et le partitionnement dynamique de données [IHW04].

Le routage de tuples a été le principe du travail présenté par Avnur et al. [AH00]. Dans [AH00], les auteurs ont proposé un mécanisme d’évaluation de requêtes nommé «Eddy». Eddy réordonne en continu les opérateurs d’une requête afin de s’adapter dynamique-ment aux variations des caractéristiques de données (coût d’un opérateur, sélectivités d’opérateurs, taux d’arrivé des tuples). Eddy peut être considéré comme un routeur de tuples positionné entre des relations et des opérateurs. Chaque opérateur doit avoir une ou deux files d’attentes d’entrée pour recevoir les tuples envoyés par Eddy et une file d’at-tente de sortie pour retourner les tuples résultats à Eddy. Les tuples reçus par Eddy sont acheminés vers les opérateurs dans des ordres différents. Eddy sélectionne automatique-ment un ordre pour acheminer chaque tuple. Pour illustrer ceci, considérons la requête Q = σ(R) on σ(S) on σ(T ). Un opérateur Eddy, deux opérateurs de jointure et trois opérateurs de sélection sont nécessaires pour exécuter cette requête. Eddy exécute Q en routant les tuples reçus à partir des relations R, S et T, vers les opérateurs de sélection et de jointure. Lorsqu’un opérateur reçoit un tuple de Eddy, il y applique le prédicat corres-pondant et retourne les résultats à Eddy. Ce dernier transmet les résultats aux opérateurs restant pour la suite de l’exécution.

routage. Celle-ci se réfère à l’ensemble de règles utilisées pour choisir -pour un tuple- la destination valide. La stratégie de routage doit être efficace et intelligente afin de mini-miser le temps de réponse. Par exemple, Eddy ne doit pas acheminer les tuples de R à l’opérateur de sélection σ(S). La principale limite dans Eddy, c’est que les algorithmes de routage sont des algorithmes gloutons. Ces algorithmes opèrent d’une manière itérative. A chaque itération, ils minimisent une fonction partielle des coûts en choisissant un optimal local. Ceci ne permet toujours pas d’obtenir une optimalité globale [BB05]. De plus, Eddy doit explorer plusieurs routes pour trouver le plan adéquat. Ceci peut induire un sur-coût important [BB05].

Dans la même perspective qu’Eddy [AH00], à savoir obtenir un résultat global à partir de résultats partiels, Ives et al. [IHW04] ont proposé une méthode d’optimisation basée sur le partitionnement dynamique de données. Cette méthode vise à corriger les sous-optimalités de plans causées par des erreurs d’estimations dues au manque d’informations sur les sources de données lors de l’optimisation. Comme dans Eddy [AH00], la correction d’un plan se fait pendant l’exécution d’un opérateur. Cependant, le principe de fonction-nement est différent. Dans [IHW04], un ensemble de plans d’exécution est associé à chaque requête. Ces plans seront exécutés en parallèle ou en séquence sur des partitions de don-nées distinctes. Les décisions sur la façon de répartir les dondon-nées dépendent de nombreux facteurs, par exemple, la sémantique de chaque opérateur, les statistiques disponibles sur les données. L’exécution d’un plan associé à une requête est contrôlée. Ce plan peut être remplacé par un nouveau plan s’il s’avère sous-optimal. Les tuples traités par chaque plan représentent un partitionnement de données. Quand un plan d’exécution est remplacé, un nouveau partitionnement de données est produit. L’union des tuples produits par les différents plans ne fournit qu’une partie du résultat global. Ainsi, pour calculer le résultat global d’une requête, il faut calculer les résultats des combinaisons des divers partition-nements de données. Pour illustrer ceci, nous fournissons un exemple d’une requête Q de jointure entre trois relations R, S et T. Supposons qu’en se basant sur des statistiques disponibles, un plan P0 est d’abord généré pour Q = (R on S) on T . Lors de l’exécution,

des statistiques actualisées sont recueillies. Supposons que l’optimiseur se rend compte que P0 est sous-optimal et qu’il serait préférable de remplacer P0 par un plan P1 pour Q = R on (S on T ). Plutôt que de redémarrer la requête en utilisant P1, l’optimiseur suspend le plan partiellement exécuté, à savoir P0 qui a déjà retourné des résultats. P0 représente la phase 0 de l’exécution. Les tuples traités dans cette phase sont dénotés R0, S0 et T0. P1 représente la 1ère phase. Les tuples traités dans cette phase sont dénotés R1, S1 et T1. Après exécution de P0 et P1, le résultat de la requête est calculé comme suit :

Q = (R0 on S0 on T0)[(R1 on S1 on T1)[(R0 on S0 on T1)[(R0 on S1 on T0)[

(R0 on S1 on T1)[(R1 on S0 on T0)[(R1 on S1 on T0)[(R1 on S0 on T1) (2.1)

Dans cette méthode, comme dans toutes les méthodes précédemment décrites dans l’approche d’optimisation basée sur des estimations en points singuliers, l’objectif est d’assurer des performances optimales dans des circonstances d’exécution spécifiques. Ces circonstances sont modélisées par des estimations singulières des paramètres nécessaires aux calculs des coûts. Pour atteindre leur objectif, les méthodes dans cette approche s’ap-puient sur un comportement réactif. Quand une sous-optimalité d’un plan d’exécution est détectée, l’optimiseur de requêtes est invoqué pour corriger cette sous-optimalité. Une cor-rection décidée par l’optimiseur peut être fondée sur des estimations à nouveau erronées. Par conséquent, l’optimiseur peut être ré-invoqué plusieurs fois durant l’exécution d’une requête. Ceci peut induire un sur-coût important et une dégradation des performances. Une approche alternative a été proposée pour éviter ce problème. Celle-ci vise la pré-vention plutôt que la correction de sous-optimalités de plans d’exécution. La possibilité d’erreurs dans les estimations utilisées par l’optimiseur est tenue en compte dès la phase initiale d’optimisation. Pour modéliser ces erreurs potentielles, cette approche alternative fait usage de plusieurs points plutôt qu’un point singulier pour estimer chaque paramètre présumé incertain. Cette approche est appelée optimisation basée sur des estimations en

un ensemble points. Elle est détaillée dans la section suivante.