La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Tri Externe Chapitre 13: 13.1—13.5

Présentations similaires


Présentation au sujet: "Tri Externe Chapitre 13: 13.1—13.5"— Transcription de la présentation:

1 Tri Externe Chapitre 13: 13.1—13.5
The slides for this text are organized into chapters. This lecture covers Chapter 11. Chapter 1: Introduction to Database Systems Chapter 2: The Entity-Relationship Model Chapter 3: The Relational Model Chapter 4 (Part A): Relational Algebra Chapter 4 (Part B): Relational Calculus Chapter 5: SQL: Queries, Programming, Triggers Chapter 6: Query-by-Example (QBE) Chapter 7: Storing Data: Disks and Files Chapter 8: File Organizations and Indexing Chapter 9: Tree-Structured Indexing Chapter 10: Hash-Based Indexing Chapter 11: External Sorting Chapter 12 (Part A): Evaluation of Relational Operators Chapter 12 (Part B): Evaluation of Relational Operators: Other Techniques Chapter 13: Introduction to Query Optimization Chapter 14: A Typical Relational Optimizer Chapter 15: Schema Refinement and Normal Forms Chapter 16 (Part A): Physical Database Design Chapter 16 (Part B): Database Tuning Chapter 17: Security Chapter 18: Transaction Management Overview Chapter 19: Concurrency Control Chapter 20: Crash Recovery Chapter 21: Parallel and Distributed Databases Chapter 22: Internet Databases Chapter 23: Decision Support Chapter 24: Data Mining Chapter 25: Object-Database Systems Chapter 26: Spatial Data Management Chapter 27: Deductive Databases Chapter 28: Additional Topics 1

2 Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)!
Données requises en ordre trié P.ex.: Trouver les étudiants en ordre croissant de gpa Chargement en vrac de l’index à arbre B+ Élimination des duplicatas dans une collection d’enregistrements Algorithme de Sort-merge join Problème commun: trier des données trop larges pour tenir en mémoire 4

3 Merge Sort à 2 Voies: Requiert 3 Tampons
Passage 1: Lire une page, la trier (en mémoire), l’écrire sur disque. seulement une page tampon utilisée Passage 2, 3, …, etc.: trois pages tampon utilisées ENTREE 1 SORTIE ENTREE 2 Mémoire principale Disque Disque 5

4 Merge Sort à 2 Voies: Algorithme
proc two-way_extsort(file) // Trier un fichier sur disque en utilisant 3 pages tampons // Passage 0: produit des runs d’une page Lire chaque page du fichier dans la mémoire, le trier et l’écrire. //Fusionner des paires de runs pour produire de plus long runs // jusqu’à ce qu’il ne reste qu’un seul run While # de runs à la fin du passage précédent > 1 do: //Traiter les passages i=1,2,… While il y a des runs à fusionner issus du passage précédent do: Prendre les 2 runs suivants du passage précèdent. Lire chaque run dans un tampon d’entrée, 1 page à la fois. Fusionner les runs et écrire le résultat dans le tampon de sortie en forçant le contenu de ce tampon vers le disque page par page. endproc 4

5 Merge Sort Externe à 2 Voies
A chaque passage on lit et écrit chaque page du fichier => 2N I/O’s par passage. N pages dans le fichier => # de passages. D’où le coût total est: Idee: Divide et impera: trier des sousfichiers et fusionner. Dans l’exemple, le fichier d’entrée contient 7 pages; les pages noires montrent ce qui se passerait avec 8 pages. 3,4 6,2 9,4 8,7 5,6 3,1 2 Fichier PASSAGE 0 3,4 2,6 4,9 7,8 5,6 1,3 2 runs de 1page PASSAGE 1 2,3 4,7 1,3 runs de 2 pages 4,6 8,9 5,6 2 PASSAGE 2 2,3 4,4 1,2 runs de 4 pages 6,7 3,5 8,9 6 PASSAGE 3 1,2 2,3 3,4 runs de 8 pages 4,5 6,6 7,8 9 6

6 Merge Sort Externe Général
Coment utiliser plus de 3 pages tampon ? Pour trier un fichier avec N pages en utilisant B pages tampon: Passage 0: utiliser B pages tampon. Produit runs triés de B pages chacune. Passage 2, …, etc.: fusionner B-1 runs. ENTREE 1 . . . ENTREE 2 . . . . . . SORTIE ENTREE B-1 Disque Disque B tampons en mémoire 7

7 Merge Sort Externe Général: Algorithme
proc two-way_extsort(file) // Trier un fichier sur disque en utilisant B pages tampons // Passage 0: produit des runs de B pages Lire B pages du fichier dans la mémoire, les trier et les écrire. //Fusionner B-1 runs pour produire de plus long runs // jusqu’à ce qu’il ne reste qu’un seul run While # de runs à la fin du passage précédent > 1 do: //Traiter les passages i=1,2,… While il y a des runs à fusionner issus du passage précédent do: Prendre les B-1 runs suivants du passage précèdent. Lire chaque run dans un tampon d’entrée, 1 page à la fois. Fusionner les runs et écrire le résultat dans le tampon de sortie en forçant le contenu de ce tampon vers le disque page par page. endproc 4

8 Coût du Merge Sort Externe
Nombre de passages: Coût = 2N * (# de passages) P.ex., avec 5 pages tampon, trier un fichier de 108 pages: Passage 0: = 22 runs triés de 5 pages chacune (le dernier n’ayant que 3 pages) Passage 1: = 6 runs triés de 20 pages chacune (le dernier avec seulement 8 pages) Passage 2: 2 runs triés, 80 pages et 28 pages Passage 3: fichier trié de 108 pages 8

9 Nombre de Passages du Triage Externe
9

10 I/O pour le Merge Sort Externe
… de plus longs runs signifient souvent moins de passages! Les algorithmes présentés font des I/O d’une page à la fois. En pratique, on lit un bloc de pages sequentiellement! Suggestion: les tampons devraient contenir des blocs de pages et non des pages individuelles. En pratique, la plupart des fichiers sont triés en 2-3 passages. Des DBMSs typiques trient 1M d’enreg.’s de la taille de 100 bytes en 15 minutes.

11 Nombre de Passages du Triage Optimisé
Taille des Blocs = 32, le passage initial produit des runs de 2B. 13

12 Double Tampons Afin de réduire le temps d’attente pour que une requête I/O soit complétée, on peut prélire les données dans un bloc de réserve. Potentiellement, plus de passages sont possibles; en pratique, la plupart des fichiers sont toujours triés en 2-3 passages. ENTREE 1 ENTREE 1' ENTREE 2 SORTIE ENTREE 2' SORTIE' b Taille de bloc Disque ENTREE k Disque ENTREE k' B tampons en mémoire, fusion à k voies

13 Utilisation des Arbres B+ pour Trier
Scénario: La table à trier a un indexe à arbre B+ sur les colonnes de triages. Idée: Puiser les enregistrements dans l’ordre en traversant les feuilles de l’indexe. Est-ce une bonne idée ? Cas à considérer: L’index B+ est groupé: Bonne idée! L’index B+ est non groupé: Pourrait être une très mauvaise idée! 15

14 Index B+ Groupé Utilisé pour Trier
Coût: partir de la racine à la feuille la plus à gauche et de là traverser toutes les pages feuilles (Alternative 1) Si l’alternative 2 est utilisée? Coût additionnel de puiser les enreg.’s des données: chaque page puisée juste une fois. Index (Oriente la recherche) Entrees des donnees ("Sequence set") Enregistrements des données Toujours meilleur que le triage externe! 16

15 Index B+ Nongroupé Utilisé pour Trier
Alternative (2) pour les entrées des données; chaque entrée contient le rid d’un enregistrement des données. En général, un I/O par enregistrement des données! Index Entrées des données Données 17

16 Résumé Le triage externe est important; un SGBD peut dédier une partie de la réserve des pages tampon juste pour cette tâche! Le merge sort externe minimalise les coûts des entrées et sorties vers le disque: Passage 0: Produit des runs triés de taille B (# de page tampon). Les passages suivants sont des runs de fusion. Le # de runs fusionnés à la fois dépend de B et de la taille du bloc. Bloc de large taille => petit # de runs à fusionner. Les index à arbre B+ groupé sont bons pour le triage externe; les index nongroupés sont généralement très mauvais. 19


Télécharger ppt "Tri Externe Chapitre 13: 13.1—13.5"

Présentations similaires


Annonces Google