Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJérôme Chollet Modifié depuis plus de 10 années
1
1 Evaluation des Operations Relationnelles : Algorithmes Additionnels Chapitre 14, 14.1--14.3, 15.5-14.7
2
2 Sélections: Utilisation dun Index Le coût dépend du # de tuples qualifiés et du groupement: Le coût (généralement petit) pour trouver les entrées de données qualifiées, plus le coût (généralement significatif) pour retrouver les enregistrements. En supposant une distribution uniforme des noms, environ 10% des tuples sont qualifiés pour une sélection de la forme « rname < C» (i.e. 100 pages, 10000 tuples). Avec un index groupé, le coût est moins que 100 I/Os; avec un index non groupé, le coût peut aller jusquà 10000 I/Os! Amélioration importante pour les indexes non groupés: 1. Trouver les entrées de données (rappel rid = ). 2. Trier les rid s des enregistrement de données à extraire selon la composante page_id. 3. Puiser les rids dans lordre des page_id s. Ceci garantit que chaque page emmenée en mémoire permet datteindre les tuples qualifiés lun après lautre.
3
3 Approches pour Sélections Générales Première approche: Trouver le chemin daccès le plus sélectif, extraire les tuples utilisant ce chemin et appliquer les termes restants qui ne correspondent pas au chemin daccès: chemin daccès le plus sélectif: un index ou un scannage qui, selon une estimation, requiert le moins daccès au disque. Les termes qui correspondent à cet index réduisent le nombre de tuples extraits; dautres termes sont utilisés pour éliminer quelques tuples extraits, mais naffectent pas le nombre de pages extraites du disque. Considérons day pourrait être utilisé; day<8/9/94 doit alors etre validé.
4
4 Approches pour Sélections Générales (Suite) Seconde approche (Si nous avons 2 ou plusieurs indexes correspondants à la condition qui utilisent les alternatives (2) ou (3) des entrées de données): Obtenir lensembles de rid s des enregistrements des données en utilisant chaque index correspondant à la condition. Ensuite calculer lintersection de ces ensembles de rid s. Extraire les enregistrements du disque et appliquer les termes restants. Considérons day<8/9/94 AND bid=5 AND sid=3. Si nous avons un index à arbre B+ sur day et un index sur sid utilisant lalternative (2), nous pouvons extraire les rid s des enregistrements qui satisfont day<8/9/94 en utilisant le premier index, ensuite les rid s des enregistrements qui satisfont sid=3 en utilisant le deuxième index, calculer lintersection, et appliquer le terme bid=5.
5
5 Projection Algorithme basé sur le tri: Scanner R afin de produire des tuples qui contiennent seulement les attributs désirés. Trier lensemble de tuples résultant de la première étape en utilisant la combinaison de tous ses attributs comme clé de tri. Scanner le résultat de la deuxième étape en comparant les tuples adjacent afin déliminer les duplicatas. Coût: O(MlogM) Ce coût est essentiellement le fait de la deuxième étape. SELECT DISTINCT R.sid, R.bid FROM Reserves R
6
6 Projection (Suite) Une amélioration de lapproche basée sur le tri: Modifier le passage 0 du tri externe afin déliminer les valeurs des colonnes ne figurant pas sur la liste de projection. En fait les tuples dans les runs sont plus petits que les tuples originaux; et leur taille dépend du nombre et de la taille des valeurs des colonnes éliminées.) Modifier les passages de fusion afin déliminer les duplicatas. Coût: Passage 0: lecture de la relation originale (de taille M), écriture du même nombre de tuples. Passages > 0: peu de tuples écrits à chaque passage.
7
7 Projection (Suite) Une approche basée sur le hachage: Partition: Lire R en utilisant un tampon dentrée. Pour chaque tuple, éliminer les valeurs des colonnes ne figurant pas sur la liste de projection, applique une fonction de hachage h1 afin de choisir un des B-1 tampons de sortie. Le résultat sera B-1 partitions (de tuples sans les champs indésirables). La méthode garantit que 2 tuples de différentes partitions sont distincts. Elimination des duplicatas: lire chaque partition et en construire une table de hachage en mémoire principale en utilisant une fonction de hachage h2 (différente de h1 ) ayant comme entrée tous les champs du tuple; éliminer les duplicatas en passant. Appliquer la méthode récursivement si la partition est trop grande. Coût: Partition: lire R, écrire chaque tuple de R amputé des champs indésirables Elimination des duplicatas: lecture de tuples générés par la partition.
8
8 Projection (Suite) Les algorithmes basés sur le tri sont standard. Ils sont supérieurs au hachage si lon a beaucoup de duplicatas lorsque la distribution des valeurs de hachage nest pas uniforme Le résultat est trié ! Si un index sur la relation contient tous les attributs de la liste de sélection dans sa clé de recherche, nous pouvons opérer un scannage de lindex (« index-only scan »). Cette méthode applique la projection sur les entrées de données sans jamais recourir aux données elles-mêmes. Si un index à arbre contient tous les attributs des attributs désirés comme préfixe de la clé de recherche, nous pouvons faire mieux encore: Extraire les entrées de données dans lordre (en appliquant la méthode « index-only scan ») en éliminant les champs indésirables; enfin comparer les tuples adjacents pour éliminer les duplicatas.
9
9 Opérations Ensemblistes Intersection et produit Cartésien: cas spéciaux du join Intersection: un join avec égalité sur toutes les colonnes Produit Cartésien: un join sans condition Union de R et S: Algorithme basé sur le tri: Trier les deux relations (en combinant tous les attributs). Scanner les relations triées simultanément et les fusionner, en éliminant les duplicatas. Amélioration: produire des runs triés de R et S et les fusionner simultanément. Différence (R – S): Pendant la fusion, sortir les tuples de R qui napparaissent pas dans S.
10
10 Opérations Ensemblistes (Suite) Union de R et S: Algorithme basé sur le hachage: Partition de R et S en utilisant une fonction de hachage h. Traiter chaque partition l de S comme suit: Construire une table de hachage pour la partition l en mémoire en utilisant h2, différent de h1. Scanner la partition correspondante l de R, et pour chaque tuple de cette partition, chercher le tuple correspondant dans la partition l de S en utilisant h2. Si le tuple est dans la table de hachage, léliminer, sinon, ly inscrire. Sortir la table de hachage et réinitialiser celle en mémoire pour la prochaine partition de S. Différence (R – S): Scanner la partition l de R comme ci-dessus, et pour chaque tuple de cette partition, chercher le tuple correspondant dans la partition l de S en utilisant h2. Si le tuple nest pas dans la table de hachage, le sortir dans le résultat, sinon, léliminer.
11
11 Operations dAgrégat AVG, MIN, COUNT, MIN, MAX Sans GROUP BY: En général, un scannage de la relation est requis. Sil existe un index dont la clé de recherche contient tous les attributs dans les clauses SELECT ou WHERE, on peut utiliser la méthode « index-only scan ».
12
12 Operations dAgrégat ( Suite ) Avec GROUP BY: Trier la relation en utilisant les attributs de GROUP BY, ensuite scanner la relation et calculer lagrégat pour chaque groupe. (Amélioration: combiner le tri et le calcul de lagrégat.) Sil existe un index à arbre dont la clé de recherche contient tous les attributs dans les clauses SELECT, WHERE et GROUP BY, on peut utiliser la méthode « index-only scan »; Si les attributs de GROUP BY forment un préfix de la clé de recherche, nous pouvons extraire les entrees de donnees/tuples dans lordre dicté par GROUP BY. Une approche basée sur le hachage existe aussi; elle est similaire aux algorithmes des opérations précédentes.
13
13 Résumé Une implémentation soigneusement faite des operateurs de lalgèbre relationnelle est très importante. En général, plusieurs algorithmes alternatifs existent pour chaque operateur et aucun deux nest universellement supérieur aux autres. Ainsi donc, toutes les alternative disponibles doivent être considérées pendant lexécution dune requête afin de choisir la meilleure alternative pour chaque cas despèce.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.