Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων
This presentation is the property of its rightful owner.
Sponsored Links
1 / 67

Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων PowerPoint PPT Presentation


  • 102 Views
  • Uploaded on
  • Presentation posted in: General

Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων. Βάσεις Δεδομένων II Τμήμα Διδακτικής της Τεχνολογίας και Ψηφιακών Συστημάτων Δαμιανός Χατζηαντωνίου. Βασικά βήματα στην επεξεργασία ερωτημάτων. 1. Μετάφραση 2. Βελτιστοποίηση 3. Υπολογισμός. Βασικά βήματα στην επεξεργασία ερωτημάτων.

Download Presentation

Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5092555

Επεξεργασία και βελτιστοποίηση σχεσιακών ερωτημάτων

Βάσεις Δεδομένων II

Τμήμα Διδακτικής της Τεχνολογίας και Ψηφιακών Συστημάτων

Δαμιανός Χατζηαντωνίου


5092555

Βασικά βήματα στην επεξεργασία ερωτημάτων

1.Μετάφραση

2.Βελτιστοποίηση

3.Υπολογισμός


5092555

Βασικά βήματα στην επεξεργασία ερωτημάτων

Μετάφραση (Parsing and translation)

  • Μετάφραση του ερωτήματος σε μία internal μορφή. Αυτή μετατρέπεται κατόπιν σε σχεσιακή άλγεβρα.

  • Ο Parser ελέγχει το συντακτικό και τους πίνακες.

Υπολογισμός (Evaluation)

Η μηχανή εκτέλεσης ερωτημάτων(query-execution engine)παίρνει το σχέδιο υπολογισμού (query-evaluation plan), το εκτελεί, και επιστρέφει την απάντηση στο χρήστη.


5092555

Βασικά βήματα στην επεξεργασία ερωτημάτων

Βελτιστοποίηση–εύρεση του πλάνου υπολογισμού με το ελάχιστοκόστος

  • Μία έκφραση σχεσιακής άλγεβρας μπορεί να έχει πολλές ισοδύναμες μορφέςΠ.χ.,balance2500(balance(account)) είναι ισοδύναμη με: balance(balance2500(account))

  • Κάθε έκφραση σχεσιακής άλγεβρας μπορεί να υπολογιστεί με διάφορετικούς τρόπους. Μία «σημειωμένη» έκφραση (annotated expression) η οποία σημειώνει τον τρόπο υπολογισμού καλείταισχέδιο υπολογισμού(evaluation-plan).Π.χ.,μπορεί να χρησιμοποιηθείένα ευρετήριο επί του balanceγια να βρεθούν λογαριασμοί με balance < 2500, η να σαρωθεί πλήρως ο πίνακας

  • Από όλες τις ισοδύναμες εκφράσεις, επέλεξε αυτή με το «φθηνότερο» σχέδιο υπολογισμού. Κατάλογος με κόστη.


5092555

Παράδειγμα – παράσταση αλγεβρικών εκφράσεων

  • Έστω το ερώτημα: «βρες το όνομα των πελατών με λογαριασμούς με υπόλοιπο κάτω από 2500», το οποίο έχει μετατραπεί σε σχεσιακή άλγεβρα:

    πcustomer-name (σbalance<2500(account) customer)


5092555

Παράδειγμα – ισοδύναμες αλγεβρικές εκφράσεις

  • Μία αλγεβρική έκφραση μπορεί να μετατραπεί σε ισοδύναμες εκφράσεις βάση κανόνων ισοδυναμίας (equivalence rules, transformation rules).


5092555

Παράδειγμα – «σημειωμένες» εκφράσεις

  • Έχοντας μία αλγεβρική έκφραση όπως προηγουμένως, σημειώνουμε πάνω στο δέντρο τους αλγόριθμους με τους οποίους υπολογίζεται κάθε τελεστής και τον τρόπο «διάχυσης» των δεδομένων από επίπεδο σε επίπεδο.


5092555

Παράδειγμα – «σημειωμένες» εκφράσεις

  • Παρατηρήσεις:

    • Δεδομένου ότι υπάρχουν διαφορετικοί τρόποι για να υπολογίσουμε έναν τελεστή και διαφορετικοί τρόποι για να «διαχύσουμε» τα δεδομένα, η ίδια αλγεβρική έκφραση γίνεται «annotated» με πολλούς τρόπους.

    • Σύμφωνα με κάποια μοντέλα κόστους, κάθε annotated έκφραση έχει κάποιο κόστος.

    • Αυτό το κάνουμε για κάθε ισοδύναμη αλγεβρική έκφραση. Θεωρητικά, επιλέγουμε από όλα τα δυνατά πλάνα, εκείνο με το μικρότερο κόστος.


5092555

Σχεσιακοί τελεστές

  • Θα εξετάσουμε πως να υλοποιήσουμε:

    • Selection ( ) Επιλέγει υποσύνολο γραμμών από σχέση.

    • Projection ( ) Διαγράφει στήλες από μία σχέση.

    • Join ( ) Επιτρέπει να συνδυαστούν δύο σχέσεις.

    • Set-difference ( ) Γραμμές στην 1η σχέση και όχι στη 2η.

    • Union ( ) Γραμμές και στην 1η και στη 2η σχέση.

    • Aggregation (SUM, MIN, etc.) καιGROUP BY

  • Αφού κάθε τελεστής επιστρέφει μία σχέση, οι τελεστές συντίθενται! Αφού εξετάσουμε τους τελεστές, θα δού-με πως να βελτιστοποιήσουμε τα σύνθετα ερωτήματα


5092555

Υπολογισμός τελεστών-Γενικές έννοιες

  • Τεχνικές αλγορίθμων:

    • Επανάληψη

    • Ευρετηριοποίηση

    • Διαμέριση

  • Διαδρομές πρόσβασης (access paths)

    • Σάρωση αρχείου

    • Ευρετήριο + κατάλληλη συνθήκη επιλογής

  • Επιλεκτικότητα της διαδρομής πρόσβασης (selectivity): πλήθος των σελίδων που ανακτώνται για να ανακτήσουμε τις εγγραφές που θέλουμε.

  • Κόστος: μετράμε μόνο το Ι/Ο (πλήθος σελιδών).


Schema

Schema για τα παραδείγματα

Sailors (sid: integer, sname: string, rating: integer, age: real)

Reserves (sid: integer, bid: integer, day: dates, rname: string)

  • Reserves:

    • Κάθε πλειάδαείναι 40 bytes, 100 εγγραφές ανά σελίδα, 1000 σελίδες.

  • Sailors:

    • Κάθε πλειάδαείναι 50 bytes, 80 εγγραφές ανά σελίδα, 500 σελίδες.


Selections

SELECT *

FROM Reserves R

WHERE R.rname < ‘C%’

Απλά Selections

  • Της μορφής:

  • Το μέγεθος του αποτελέσματος προσεγγίζεται σανsize of R * reduction factor; Θα εξετάσουμε αργότερα πως να εκτιμούμε το reduction factor.

  • Χωρίς ευρετήριο και ταξινόμηση.

  • Ταξινομημένα δεδομένα.

  • Ευρετήριοστο γνώρισμα επιλογής

    • Β+ δέντρο.

    • Κατακερματισμένα ευρετήρια.


5092555

Χωρίς ευρετήρια

  • Μη-ταξινομημένα δεδομένα

    • Σάρωση όλης της σχέσης

    • Κόστος: Μ (ο αριθμός των σελίδων της σχέσης)

    • Π.χ. R.name=‘Joe’ είναι 1000 Ι/Οs.

  • Ταξινομημένα δεδομένα

    • Δυαδική αναζήτηση για την πρώτη εγγραφή

    • Κατόπιν σειριακή ανάκτηση σελίδων όσο η συνθήκη ικανοποιείται.

    • Κόστος log2M + ανάκτηση σελιδών

    • Π.χ. R.name=‘Joe’ είναι 10 Ι/Οs + α.σ.


5092555

Χρησιμοποιώντας ευρετήρια – Β+ δέντρα

  • Το κόστος εξαρτάται από τον # των εγγραφών που πληρούν τη συνθήκη και το clustering.

    • Το κόστος για να βρούμε τις εγγραφές (συνήθως μικρό)+ κόστος για να ανακτήσουμετις εγγραφές (μπορεί να είναι μεγάλο χωρίς clustering).

    • Π.χ. Θεωρώντας ομοιόμορφη κατανομή των ονομάτων, και έστω ότι 10% των εγγραφών πληρούν τη συνθήκη (100 pages, 10000 εγγραφές). Με ένα clustered ευρετήριο, το κόστος είναι λίγο παραπάνω από 100 I/Os; Εάν όμως το ευρετήριο είναι unclustered, μπορεί και 10000 I/Os!

  • Σημαντική τροποποίησηγια unclustered ευρετήρια:

    1. Βρες τις εγγραφές (από το ευρετήριο) που πληρούν τη συνθήκη.

    2. Ταξινόμησε τα rid’s (record ids) των εγγραφών που θα ανακτηθούν.

    3. Ανάκτησε τα rids σε σειρά. Αυτό εγγυάται ότι κάθε data page θα ερευνηθεί μία μόνο φορά (παρόλο που ο αριθμόςτων σελιδών θα είναι μεγαλύτεροςαπό τον αντίστοιχο με clustering).


5092555

Χρησιμοποιώντας κατακερματισμένα ευρετήρια

  • Χρήσιμο αν στη συνθήκη

    ο τελεστής op είναι =

  • Ένα ή δύο Ι/Ο για την ανάκτηση του bucket + το κόστος ανάκτησης των εγγραφών.

  • Π.χ. R.name=‘Joe’ και έστω ότι υπάρχουν 100 πλειάδες με R.name=‘Joe’. Πόσα Ι/Ο?


5092555

Γενικές συνθήκες επιλογής*

  • (day<8/9/94 AND rname=‘Paul’) OR bid=5 OR sid=3

  • Αυτές οι συνθήκες πρώτα μετατρέπονται σεconjunctive normal form (CNF) – κανονική μορφή σύζευξης :

    (day<8/9/94 OR bid=5 OR sid=3 ) AND (rname=‘Paul’ OR bid=5 OR sid=3)

  • Εξετάζουμε μόνο την περίπτωση χωρίς ORs (μία σύζευξη όρων της μορφής: attr op value).

  • Ένα ευρετήριοταιριάζει (μία σύζευξη) όρωνπου εμπεριέχει μόνο γνωρίσματα σε έναprefixτου κλειδιού αναζήτησης.

    • Ευρετήριοστο<a, b, c> ταιριάζει τοa=5 AND b= 3, αλλά όχι τοb=3.


5092555

Η πράξη της Προβολής

SELECTDISTINCT

R.sid, R.bid

FROM Reserves R

  • Μετατρέπεται σε πR.sid, R.bid (Reserves)

  • Απαραίτητα βήματα:

    • Απομάκρυνση των άχρηστων γνωρισμάτων

    • Απομάκρυνση των παραγόμενων διπλότυπων

  • Αλγόριθμοι:

    • Ταξινόμηση

    • Κατακερματισμός


5092555

Η πράξη της Προβολής - Ταξινόμηση

  • Βήματα αλγόριθμου:

    • Σάρωσε τον R και απομάκρυνε τα ανεπιθύμητα γνωρίσματα

    • Ταξινόμησε το αποτέλεσμα βάση όλων των γνωρισμάτων

    • Σάρωσε το ταξινομημένο αποτέλεσμα και απομάκρυνε τις διπλότυπες πλειάδες.

      Βήμα 1: Μ Ι/Ο για σάρωση και Τ Ι/Ο για τον προσωρινό πίνακα

      Βήμα 2: κόστος: Ο(ΤlogT)

      Βήμα 3: κόστος: Τ Ι/Ο

  • Π.χ. Στην περίπτωση του Reserves?

  • Μπορούμε να βελτιώσουμε τον αλγόριθμο ώστε να κάνει προβολή με απομάκρυνση διπλοτύπων (εκτός ύλης)


5092555

Η πράξη της Προβολής-Κατακερματισμός

  • Φάση διαμερισμού: Διάβασε το R χρησιμοποιώντας μία είσοδο (ένα input buffer). Για κάθε εγγραφή, πέταξε τα ανεπιθύμηταγνωρίσματα, και χρησιμοποίησε τη συνάρτηση κατακερματισμούh1στα υπόλοιπα γνωρίσματα για να επιλέξεις μία από τις B-1 εξόδους (output buffers).

    • Το αποτέλεσμα είναι B-1 διαμερίσεις (εγγραφών χωρίς τα ανεπιθύμητα πεδία). Δύο εγγραφές διαφορετικών διαμερισμάτων είναι διακριτές.


5092555

Η πράξη της Προβολής-Κατακερματισμός

  • Φάση απομάκρυνσης διπλοτύπων: Για κάθε διαμέριση, διάβασε την και κατασκεύασε έναπίνακα στη μνήμη κατακερματισμού χρησιμοποιώντας τη συνάρτησηh2 (<> h1) σε όλα τα πεδία, καθώς απομακρύνεις τα διπλότυπα.

    • Εάν η διαμέριση δε χωράει στη μνήμη, μπορεί να εφαρμόστεί αυτός ο αλγόριθμος αναδρομικά σε αυτή τη διαμέριση.

  • Κόστος: Για τη διαμέριση, το διάβασμα του R (Μ Ι/Ο)+ το γράψιμο κάθε εγγραφής, αλλά με λιγότερα πεδία (Τ Ι/Ο). Το αποτέλεσμαδιαβάζεται στην επόμενη φάση (Τ Ι/Ο). Σύνολο: Μ+2Τ σελίδες.


5092555

Η πράξη της προβολής

  • Η τεχνική ταξινόμησης είναι το standard; καλύτερος χειρισμός μη-ομοιορφίας + ταξινομημένο αποτέλεσμα

  • Εάν ένα ευρετήριο περιέχει όλα τα επιθυμητά πεδία στο κλειδί αναζήτησης, μπορεί να χρησιμοποιηθεί.

    • Εφάρμοσε τις τεχνικές προβολής στο ευρετήριο (μικρότερο).

  • Εάν ένα ταξινομημένο ευρετήριο (π.χ., δέντρο) index περιέχει όλα τα επιθυμητά πεδία σαν prefix στο κλειδί αναζήτησης, μπορούμε ακόμα καλύτερα:

    • Ανάκτησε τα στοιχεία του ευρετηρίου σε σειρά (index-only scan), πέταξε τα ανεπιθύμητα πεδία και σύγκρινε γειτονικές εγγραφές για διπλότυπα.


5092555

Συνολοθεωρητικές πράξεις

  • Η τομή και καρτεσιανό γινόμενο ειδικές περιπτώσεις σύζευξης

  • Η ένωση (Distinct) καιη διαφοράείναι παρόμοιες. Ένωση:

  • Προσέγγιση βασισμένη στην ταξινόμηση:

    • Ταξινόμησε τις δύο σχέσεις (ως προς το συνδυασμό όλων των πεδίων)

    • Σάρωσε τις ταξινομημένες σχέσεις και συγχώνευσέ τις.

    • Ενναλακτικά: Παραγωγή ταξινομημένων συρμών (runs) των δύο σχέσεων και παράλληλη συγχώνευση. (*)

  • Προσέγγιση βασισμένη στον κατακερματισμό:

    • Διαμέρισε τις R και S χρησιμοποιώντας μια συνάρτηση κατακερματισ. h.

    • Για κάθε S-διαμέριση, κατασκεύασε στη μνήμηέναν πίνακα κατακερμα-τισμού (χρησιμοποιώντας μίαh2), σάρωσε την αντίστοιχη R-διαμέριση και είτε πρόσθεσέ τηνστο πίνακα, είτε απόρριψέ την (διπλότυπα).


5092555

Η πράξη της σύζευξης

SELECT *

FROM Reserves R1, Sailors S1

WHERE R1.sid=S1.sid

  • Στην άλγεβρα: R S. Πολύ σύνηθες! Πρέπει να βελτιστοποι-ηθεί. R S πολύ μεγάλο,άρα, R S ακολουθούμενο από επιλογή είναι αναποτελεσματικό.

  • Υπόθεση: M πλειάδες στη R, pRπλειάδες ανά σελίδα, N πλειάδεςστη S, pSπλειάδες ανά σελίδα.

    • Στα παραδείγματά μας, R είναι η Reserves και S είναι η Sailors.

  • Μετρική κόστους: ο αριθμός των I/Os.

  • Χρησιμοποιούμε το συμβολισμό ri==sjγια τη συνθήκη σύζευξης


5092555

Απλή εμφώλευση βρόγχων

  • Απλή εμφώλευση βρόγχων (simple nested loop join)

  • Κόστος: M + pR * M * N

  • Π.χ. 1000 + 100*1000*500 = 1000+5*107 Ι/Ο (140 ώρες)

  • Βελτίωση: σύζευξη ανά σελίδες: για κάθε σελίδα της R, ανακτούμε μία-μία σελίδα της S και κάνουμε τη σύζευξη

Εξωτερική σχέση

foreach tuple r in R do

foreach tuple s in S do

if ri == sj then add <r, s> to result

Εσωτερική σχέση


5092555

Απλή εμφώλευση βρόγχων

for each page Br of R do begin

for each page Bs of S do beginfor each tuple tr in Br do beginfor each tuple ts in Bs do begintest pair (tr,ts) for satisfying the join condition if they do, add <tr,ts> to the result.endendend

end

  • Κόστος: Μ + Μ*Ν

  • Π.χ. 1000 + 1000*500 = 501.000 Ι/Ο (1.4 ώρες)

  • Ποιά σχέση πρέπει να επιλέγουμε σαν εξωτερική?


Block

Εμφώλευση βρόγχων κατά block

  • Εστω ότι έχουμε αρκετή ενδιάμεση μνήμη για να χωρέσει μία από τις δύο σχέσεις (έστω R). Αλγόριθμος?

  • Φορτώνουμε την R στη μνήμη (κόστος Μ) και κατόπιν για κάθε σελίδα της S κάνουμε τη σύζευξη στη μνήμη (κόστος Ν). Συνολικό κόστος: Μ + Ν.

  • Ποια είναι η εξωτερική και ποια η εσωτερική σχέση σε αυτή την περίπτωση?

  • Βελτίωση: κατασκευή πίνακα κατακερματισμού στη μνήμη για την R (μείωση του χρόνου CPU, όχι Ι/Ο).

  • Τι κάνουμε αν δε χωράει στη μνήμη καμμία σχέση?


Block1

Εμφώλευση βρόγχων κατά block

  • Διαμερίζουμε την R σε blocks (ο όρος block διαφορετικός από τον όροσελίδα), που το καθένα χωράει στην ενδιάμεση μνήμη, και για κάθε block σαρώνουμε την S.

  • Έστω ότι έχουμε Β σελίδες ενδιάμεσης μνήμης.

for each block Br (of size B-2 pages) of R do begin

for each page Bs of S do beginfor each tuple tr in Br do beginfor each tuple ts in Bs do begintest pair (tr,ts) for satisfying the join condition if they do, add <tr,ts> to the result.endendend

end


Block2

. . .

Εμφώλευση βρόγχων κατά block

  • Κόστος: Μ + Ν * [Μ/(Β-2)]

  • Για το «ταίριασμα» των πλειάδων δημιουργούμε έναν πίνακα κατακερματισμού στη μνήμη.

Αποτέλεσμα

Σύζευξης

R & S

Πίνακας κατακερματισμού

για το block της R(k < B-1 pages)

. . .

. . .

Output buffer

Input buffer for S

Ενδιάμεση μνήμη (Β σελίδες)


Block3

Εμφώλευση βρόγχων κατά block

  • Παράδειγμα:

  • Χρησιμοποιώντας τη Reserves (R) σαν εξωτερική σχέση και δίνοντας 100 σελίδες σε κάθε block:

    • Κόστος σαρώματος της R είναι 1000 Ι/Οs

    • Έχουμε 10 blocks

    • Για κάθε block σαρώνουμε τη Sailors = 10*500 Ι/Οs

    • Σύνολο: 1000 + 5000 = 6000 Ι/Οs.

  • Χρησιμοποιώντας τη Sailors (S) σαν εξωτερική σχέση:

    • Κόστος σαρώματος της S είναι 500 Ι/Οs

    • Έχουμε 5 blocks

    • Για κάθε block σαρώνουμε τη Reserves = 5*1000 Ι/Οs

    • Σύνολο: 500 + 5000 = 5500 Ι/Οs.

  • Λίγο περισσότερο από ένα λεπτό!


  • 5092555

    Εμφώλευση βρόγχων και ευρετήρια

    • Αν υπάρχει ευρετήριο σε μία από τις σχέσεις στο γνώρισμα σύζευξης, τότε τη θέτουμε σαν την εσωτερική σχέση S.

    • Για κάθε πλειάδα r της R βρίσκουμε αυτές τις πλειάδες της S που ταιριάζουν με την r χρησιμοποιώντας το ευρετήριο.

    • Κόστος σάρωσης της R: Μ

    • Κόστος ανάκτησης πλειάδων της S:

      • B+ tree – 2-4 I/Os + κόστος ανάκτησης (συγκροτημένο ή όχι)

      • Hash index – 1-2 I/Os + κόστος ανάκτησης (συγκροτημένο ή όχι)

    • Συγκροτημένα ευρετήρια: συνήθως ένα Ι/Ο

    • Μη-συγκροτημένα ευρετήρια: ένα Ι/Ο για κάθε matched πλειάδα.

    • Συνολικό κόστος: Μ + ( (M*pR) * κόστος εύρεσης S πλειάδων)


    5092555

    Εμφώλευση βρόγχων και ευρετήρια

    • Παράδειγμα:

    • Ευρετήριο κατακερματισμού στο sid (Π.Κ.) της Sailors.

    • Έστω 1.2 Ι/Ο για την ανάκτηση της σελίδας ευρετηρίου.

    • Κόστος σάρωσης της Reserves: 1000 I/O.

    • pR =100 - 1000 σελίδες => 100000 πλειάδες στην Reserves.

    • Κόστος ανάκτησης για κάθε πλειάδα (1.2 + 1) Ι/Ο

    • Συνολικό κόστος: 220000 + 1000 = 221000 Ι/Οs.


    5092555

    Εμφώλευση βρόγχων και ευρετήρια

    • Παράδειγμα:

    • Ευρετήριο κατακερματισμού στο sid (Ξ.Κ.) της Reserves.

    • Έστω 1.2 Ι/Ο για την ανάκτηση της σελίδας ευρετηρίου.

    • Κόστος σάρωσης της Sailors: 500 I/O.

    • pR =80 - 500 σελίδες => 40000 πλειάδες στην Reserves.

    • Κόστος ανάκτησης ευρετηρίου: 1.2 * 40000 Ι/Ο = 48000 Ι/Ο

    • Κόστος ανάκτησης πλειάδων:

      • Ομοιόμορφη κατανομή, 2.5 κρατήσεις για κάθε ναύτη

      • 2.5 * 40000 = 100000 Ι/Ο

    • Συνολικό κόστος: 500 + 48000 + 100000 = 148500 Ι/Οs


    External sort

    Εξωτερική ταξινόμηση (External Sort)

    • Σε πολλές περιπτώσεις πρέπει να ταξινομηθεί μία σχέση. Πως επιτυγχάνεται? Αν χωράει στη μνήμη, τότε χρησιμοποιούμε κλασσικές μεθόδους ταξινόμησης. Αλλιώς?

    • Εξωτερική ταξινόμηση με συγχώνευση - Εxternal sort-merge.

    • Βασική ιδέα: Έστω ότι έχουμε Β σελίδες διαθέσιμη μνήμη.

      • Φέρε τις πρώτες Β σελίδες από τη σχέση στη μνήμη

      • Ταξινόμησέ τις πλειάδες αυτών των σελιδών (γίνεται στη μνήμη)

      • Γράψε το ταξινομημένο αποτέλεσμα στο δίσκο

      • Φέρε τις επόμενες Β σελίδες και επανέλαβε

      • Αφού τελειώσει η σχέση, συγχώνευσε τα ταξινομημένα αποτελέσματα

    • Κάθε block των Β σελίδων ονομάζεται run (1st, 2nd, …) ή συρμός.


    External sort1

    Εξωτερική ταξινόμηση (External Sort)

    • Δημιούργησε ταξινομημένους συρμούς όπως προηγουμένως.Έστω ότι το i είναι αρχικά 0. Επαναληπτικά κάνε το κάτωθι μέχρι το τέλος της σχέσης:

      (a)Read Β blocks of relation into memory

      (b) Sort the in-memory blocks

      (c) Write sorted data to run Ri; increment i.

    • Συγχώνευσε τα runs; υπέθεσεότι i < Β. Σε ένα μόνο βήμα συγχώνευσης, χρησιμοποιήσε i blocks μνήμης to buffer input runs, και 1 block to buffer output. Κάνε το κάτωθι επαναληπτικά μέχρι όλες οι input buffer σελίδες έχουν αδειάσει:

      (a) Select the first record in sort order from each of the buffers

      (b) Write the record to the output

      (c) Delete the record from the buffer page; if the buffer page is empty, read the next block (if any) of the run into the buffer.

      Εάν i >= Β, απαιτούνται πολλά περάσματα συγχώνευσης. Σε κάθε πέρασμα, συγχωνεύουμε ομάδες των Β-1 runs. Συνεπώς, ένα πέρασμα μειώνει τον αριθμό των runs κατά ένα παράγοντα Β -1, μεγαλώνοντας το μέγεθός τους επίσης κατά Β-1. Εκτελούμε πολλαπλά περάσματα μέχρι όλοι οι συρμοί έχουν συγχωνευθεί σε ένα.


    5092555

    Εξωτερική ταξινόμηση – Παράδειγμα

    • Κόστος?

    • Τάξης: Ο(ΜlogΜ) (η σχέση έχει Μ σελίδες)

    • Γιατί?


    Sort merge join r s

    Σύζευξη με ταξινόμηση & συγχώνευσηSort-Merge Join (R S)

    i=j

    • Ταξινόμησε τις σχέσεις R και S στο γνώρισμα σύζευξης και κατόπιν σάρωσε τις και «συγχώνευσε» τις (δεν είναι ακριβώς συγχώνευση αλλά «ταίριασμα») στο γνώρισμα αυτό.

    Σύζευξη στο γνώρισμα α1.

    Όταν οι τιμές στο α1 είναι ίσες, τότε η πλειάδα <pr,ps> προστίθεται στο αποτέλεσμα


    5092555

    Σύζευξη με ταξινόμηση & συγχώνευση

    • Βασική ιδέα:

      • Advance scan of R until current R-tuple >= current S tuple, then advance scan of S until current S-tuple >= current R tuple; do this until current R tuple = current S tuple.

      • At this point, all R tuples with same value in Ri (current R group) and all S tuples with same value in Sj (current S group) match; output <r, s> for all pairs of such tuples.

      • Then resume scanning R and S.

    • Η R σαρώνεται μία φορά. Κάθε S group σαρώνεται μία φορά για κάθε matching πλειάδα του R. Πολλαπλά σαρώματα ενός S group πιθανόν να υπάρχουν στη διαθέσιμη μνήμη.


    5092555

    Σύζευξη με ταξινόμηση & συγχώνευση


    Sort merge join

    Παράδειγμα της Sort-Merge Join

    • Κόστος:

      • M log M + N log N (ταξινόμηση των σχέσεων R και S)

      • (M+N) – κόστος συγχώνευσης. Μπορεί να είναι όμως και Μ*Ν, αν και όχι πιθανό. Σε ποιές περιπτώσεις?


    Sort merge join1

    Παράδειγμα της Sort-Merge Join

    • Διαθέσιμη μνήμη: 300 σελίδες

      • Ταξινόμηση της Reserves = 2*2*1000 = 4000 I/Os

      • Ταξινόμηση της Sailors = 2*2*500 = 2000 Ι/Οs

      • Συνολικό κόστος: 4000+2000+1000+500 = 7500 Ι/Οs

    • Διαθέσιμη μνήμη: 100 σελίδες

      • Συνολικό κόστος: 4000+2000+1000+500 = 7500 Ι/Οs

    • Διαθέσιμη μνήμη: 35 σελίδες

      • Συνολικό κόστος: 4000+2000+1000+500 = 7500 Ι/Οs

    • Αντίστοιχα με block nested loop join τα κόστη είναι: 2500, 7500 και 15000 Ι/Οs.


    Hash join

    Original

    Relation

    Partitions

    OUTPUT

    1

    1

    2

    INPUT

    2

    hash

    function

    h

    . . .

    B-1

    B-1

    B main memory buffers

    Disk

    Disk

    Partitions

    of R & S

    Join Result

    Hash table for partition

    Ri (k < B-1 pages)

    hash

    fn

    h2

    h2

    Output

    buffer

    Input buffer

    for Si

    B main memory buffers

    Disk

    Disk

    Κατακερματισμός(Hash-Join)

    • Διαμέρισε και τις δύο σχέσειςμε μία hash συναρτησηh: οι πλειάδες της R στη διαμέριση i θα ται-ριάζουν μόνο μεπλειάδες της S στη διαμέριση i.

    • Διάβασε μία διαμέριση της R καικατακερμάτισε την χρησιμοποιώντας μίαh2 (<> h!). Σάρωσε την αντίστοιχη διαμέριση της S και ψάξε για matches.


    Hash join1

    Παρατηρήσεις επί της Hash-Join

    • #partitions k < B-1 (γιατί?), καιB-2 > μέγεθος μεγαλύ-τερηςδιαμέρισηςπου θα είναι στη μνήμη. Για ισο-μεγεθείς διαμερίσεις καιμεγιστοποιώνταςτο k:

      • k= B-1, και M/(B-1) < B-2, δηλ.., B πρέπει να >

    • Εάν δημιουργήσουμε έναν πίνακα κατακερματισμού στη μνήμη για να επιταγχύνουμε το ταίριασμα των πλειάδων, απαιτείται λίγο παραπάνω μνήμη.

    • Εάν η hash function δε διαμερίζει ομοιόμορφα, μία ή περισσότερες διαμερίσεις της R δε θα είναι στη μνήμη. Εφαρμόζουμε hashing αναδρομικάγια τη σύζευξη αυτού του R-partition με το αντίστοιχο S-partition.


    5092555

    Κόστος της σύζευξης με κατακερματισμό

    • Στη φάση της διαμέρισης, read+write και για τις δύο σχέσεις =2(M+N). Στη matching φάση, read και τις δύο σχέσεις =M+N I/Os.

    • Στο παράδειγμά μας= 4500 I/Os.

    • Sort-Merge Join vs. Hash Join:

      • Δεδομένου ενός minimum μεγέθους μνήμης (what is this, for each?) και οι δύο έχουν κόστος3(M+N) I/Os. Η Hash Join είναι καλύτερη αν τα μεγέθη των σχέσεων διαφέρουν σημαντικά.Επίσης, η Hash Join παραλληλοποιείται.

      • Η Sort-Merge είναι λιγότερο ευπαθής στο data skew; Έπίσης το αποτέλεσμα είναι ταξινομημένο (σημαντικό αργότερα).


    5092555

    Γενικές συνθήκες σύζευξης

    • Ισότητες επί πολλών γνωρισμάτων (π.χ., R.sid=S.sid ANDR.rname=S.sname):

      • Για Indexed NLJ, δημιούργησε ευρετήριο επί <sid, sname> (εανη S είναι εσωτερική); Ή χρησιμοποίησε τουsidήsname.

      • Για τις Sort-Merge και Hash Join, ταξινόμησε/διαμέρισεστο συνδυασμό των δύο γνωρισμάτων.

    • Συνθήκες με ανισότητες (π.χ., R.rname < S.sname):

      • Για indexed NLJ, χρειάζεται–συγκροτημένο- B+ tree ευρετ.

        • Ο αριθμός των matches θα είναι μάλλον αρκετά μεγαλύτερος από όταν έχουμε ισότητα.

      • Hash Join, Sort Merge Join δεν μπορούν να εφαρμοστούν.

      • Η μέθοδος Block NL μάλλον η καλύτερη μέθοδος σύζευξης.


    Avg min

    Συναθροίσεις (AVG, MIN, κλπ.)

    • Χωρίς grouping:

      • Στη γενική περ’ιπτωση, απιτεί σάρωμα του πίνακα.

      • Εάν υπάρχει ευρετήριο που να περιέχει όλα τα γνωρίσματα στο SELECTή τοWHERE, μπορεί να χρησιμοποιηθεί μόνο το ευρετήριο.

    • Με grouping:

      • Ταξινόμησε στα group-by γνωρίσματα, και κατόπιν σάρωσε τη σχέση και υπολόγισε τις συναρτήσεις συνάθροισης για κάθε group. (Κάποιος μπορεί να συνδυάσει την ταξινόμηση με τον υπολογισμό.)

      • Παρόμοια τεχνική βασισμένη στον κατακερματισμό των group-by γνωρισμάτων.

      • Έχοντας ένα δεντρικό ευρετήριο του οποίου το κλειδί αναζήτησης περιλαμβάνει όλα τα γνωρίσματαστα SELECT, WHERE καιGROUP BY, μπορούμα να σαρώσουμε μόνο το ευρετήριο.Εάν τα group-by πεδία είναι το prefix του κλειδιού αναζήτησης μπορούμε να πάρουμε τα αποτελέσματα σε group-by σειρά.


    5092555

    Βασικά βήματα στην επεξεργασία ερωτημάτων

    1.Μετάφραση

    2.Βελτιστοποίηση

    3.Υπολογισμός


    5092555

    Βελτιστοποίηση σχεσιακού ερωτήματος

    • Η βελτιστοποίηση ενός ερωτήματος αποτελείται από:

      • Απαρίθμηση των εναλλακτικών σχεδίων υπολογισμού

      • Εκτίμηση (τι σημαίνει?) του κόστους για κάθε ένα από τα εναλλακτικά σχέδια χρησιμοποιώντας τους καταλόγους του συστήματος και επιλογή εκείνου με το μικρότερο κόστος.

    • Εξετάζεται ένα υποσύνολο μόνο των εναλλακτικών σχεδίων – συνήθως ο αριθμός είναι πολύ μεγάλος (γιατί?).

    • Ένας εμπορικός βελτιστοποιητής: 40-50 ανθρωποέτη

    • System R - IBM


    Schema1

    Schema για τα παραδείγματα

    Sailors (sid: integer, sname: string, rating: integer, age: real)

    Reserves (sid: integer, bid: integer, day: dates, rname: string)

    • Reserves:

      • Κάθε πλειάδαείναι 40 bytes, 100 εγγραφές ανά σελίδα, 1000 σελίδες.

    • Sailors:

      • Κάθε πλειάδαείναι 50 bytes, 80 εγγραφές ανά σελίδα, 500 σελίδες.


    Plans

    sname

    rating > 5

    bid=100

    sid=sid

    Sailors

    Reserves

    Σχέδια υπολογισμού ερωτημάτων (plans)

    SELECT S.sname

    FROM Reserves R, Sailors S

    WHERE R.sid=S.sid AND

    R.bid=100 AND S.rating>5

    • πS.name(σbid=100^rating>5(Reserves R.sid=S.sid Sailors))

    Αλγεβρική παράσταση

    (RA tree)


    Plans1

    (On-the-fly)

    sname

    (On-the-fly)

    rating > 5

    bid=100

    (Simple Nested Loops)

    sid=sid

    Sailors

    Reserves

    Σχέδια υπολογισμού ερωτημάτων (plans)

    • Σχέδιο υπολογισμού.

    • Κόστος:

      500+500*1000 I/Os

    • Ένα πολύ κακό σχέδιο!!!

    • Ευκαιρίες:

      • Οι επιλογές θα μπορούσαν να είχαν «σπρωχτεί» να γίνουν νωρίτερα, δε χρησιμοποιούνται ευρετήρια, κλπ.

    • Βελτιστοποίηση: καλύτερα πλάνα για τον ίδιο υπολογισμό


    Materialization

    Υλοποίηση (Materialization)

    • Ο υπολογισμός του αποτελέσματος προχωράει υπολογίζοντας έναν τελεστή κάθε φορά, αρχίζοντας από το χαμηλότερο επίπεδο. Τα «υλοποιημένα» (materialized) αποτελέσματα αποθηκεύονται σε temporary σχέσεις για να χρησιμοποιηθούν για τους τελεστές του επόμενου επιπέδου.


    Pipelining

    Pipelining (Κανάλι ταχείας επεξεργασίας)

    • Συχνά το αποτέλεσμα ενός τελεστή τροφοδοτείται στον επόμενο τελεστή δια μέσου ενός «καναλιού ταχείας επεξεργασίας» (pipe, pipelining) χωρίς να δημιουργείται προσωρινός πίνακας για το ενδιάμεσο αποτέλεσμα.

    • Σημαντική εξοικονόμηση κόστους (γιατί?)

    • Θα πρέπει να επιτρέπεται από τον τελεστή και τον αλγό-ριθμο με τον οποίο υλοποιείται ο τελεστής (π.χ. sort?).

    • Υπάρχουν πολλές ευκαιρίες για pipelining, ακόμα και σε απλά σχέδια, π.χ. επιλογές με ευρετήρια (σA>5 AND B=8 (R),όπου το ευρετήριο εξυπηρετεί το γνώρισμα Β).

    • Όταν ένας μοναδιαίος τελεστής υπολογίζεται μέσω pipelining, λέμε ότι υπολογίζεται on-the-fly.


    Pipelining1

    Pipelining (Κανάλι ταχείας επεξεργασίας)

    • Σύζευξη με εμφωλευμένους βρόγχους.

    • Ο υπολογισμός ξεκινάει άπό τη ρίζα του δέντρου.

    • Ο ρυθμός παραγωγής πλειάδων από το (Α join Β) είναι ελεγχόμενος.

    • Τα pipelines μπορούν να λειτουργήσουν σε δύο modes:

      • demand driven

      • producer-driven


    System catalog

    Κατάλογος συστήματος (System Catalog)

    • Γτια κάθε ευρετήριο:

      • Δομή ευρετηρίου (π.χ., B+ tree) και κλειδιά αναζήτησης

    • Για κάθε πίνακα:

      • Όνομα, όνομα αρχείου, και δομή αρχείου (π.χ., Heap file)

      • Για κάθε γνώρισμα, όνομα και τύπος γνωρίσματος

      • Το όνομα του ευρετηρίου, για κάθε ευρετήριο

      • Περιορισμοί ακεραιότητας

    • Για κάθε όψη:

      • Όνομα της όψης και ορισμός

    • Και: στατιστικά, authorization, μέγεθος ενδιάμεσης μνήμης κλπ.

    • Οι κατάλογοι αποθηκεύονται επίσης σαν σχέσεις!


    System catalog1

    Κατάλογος συστήματος (System Catalog)

    • Πληθυσμός, Ntuples(R).

    • Μέγεθος,Npages(R).

    • Πληθυσμός ευρετηρίου,Nkeys(I).

    • Μέγεθος ευρετηρίου,INPages(I).

    • Ύψος ευρετηρίου,Iheight(I).

    • Ακτίνα τιμών ευρετηρίου,ILow(I)και Ihigh(I).

    • Οι κατάλογοι ενημερώνονται περιοδικά. Περιέ-χουν και άλλές πληροφορίες (π.χ. ιστογράμματα)


    5092555

    (On-the-fly)

    sname

    (Sort-Merge Join)

    sid=sid

    (Scan;

    (Scan;

    write to

    write to

    rating > 5

    bid=100

    temp T2)

    temp T1)

    Reserves

    Sailors

    Εναλλακτικά Σχέδια

    • Κύρια διαφορά: push selects.

    • Με 5 σελίδες διαθέσιμη μνήμης, το κόστος σχεδίου:

      • Σάρωμα Reserves (1000) + write temp T1 (10 σελίδες, εάν έχουμε 100 σκάφη, ομοιόμορφη κατανομή).

      • Σάρωμα Sailors (500) + write temp T2 (250 σελίδες, έαν 10 ratings).

      • Ταξινόμηση T1 (2*2*10) και T2 (2*3*250), συγχώνευση (10+250)

      • Σύνολο: 3560 page I/Os.

    • Με BNL σύζευξη,κόστος σύζευξης= 10+4*250, συνολικό = 2770.

    • Επίσης `push’ projections, T1 έχει μόνοsid, T2 sidκαιsname:

      • T1 χωράεισε 3 σελίδες, το κόστοςτης BNL <από 250 σελ., σύνολο < 2000


    5092555

    (On-the-fly)

    sname

    Εναλλακτικά Σχέδια

    (On-the-fly)

    rating > 5

    (Index Nested Loops,

    with pipelining )

    sid=sid

    • Με συγκροτημένο ευρετήριο στοbid της Reserves, έχουμε 100,000/100 = 1000 πλειάδες σε 1000/100=10 σελ.

    • INL μεpipelining (εξωτερική σχέση δε γίνεται materialized).

    (Use hash

    Sailors

    bid=100

    index; do

    not write

    result to

    temp)

    Reserves

    • Αποβάλλοντας τα άχρηστα γνωρίσματα δε βοηθάει.

    • Το γνώρισμα σύζευξηςsidείναι κλειδί για τη Sailors.

      • Το πολύ μία matching πλειάδα, unclustered ευρετήριοστοsid OK.

    • Η απόφαση να «σπρώξουμε» το rating>5 πριν το join εξαρτάται

    • από τη διαθεσιμότητα ευρετηρίου επί του sidστο Sailors.

    • Κόστος: Η επιλογή πλειάδων της Reserves(10 I/Os); για κάθε

    • μία παίρνουμε τη matching Sailors πλειάδα(1000*1.2); 1210 I/Os


    Equivalences

    Αλγεβρικές ισοδυναμίες(Equivalences)

    • Μας επιτρέπουν να δημιουργούμε ισοδύναμες αλγεβρικές παραστάσεις που έχουν (ίσως) καλύτερο τρόπο υπολογισμού

    • Επιλογές (selections):

      (cascade)

      (αντιμετάθεση)

    • Προβολές(projections):

      (cascade)


    Equivalences1

    Αλγεβρικές ισοδυναμίες(Equivalences)

    • Μας επιτρέπουν να δημιουργούμε ισοδύναμες αλγεβρικές παραστάσεις που έχουν (ίσως) καλύτερο τρόπο υπολογισμού

    • Συζεύξεις:

    • Τομή, ένωση:

    R (S T) (R S) T(προσεταιριστική)

    (R S) (S R) (αντιμεταθετική)

    R  S = S  R(αντιμεταθετική)

    R  (S  Τ) = (R  S)  T(προσεταιριστική)


    Equivalences2

    Αλγεβρικές ισοδυναμίες(Equivalences)

    • Συνδυασμοί αλγεβρικών τελεστών:

      πα(σC(R)) σC(πα(R))(προϋποθέσεις?)

      σC(R S) σC(R) S(προϋποθέσεις?)

      πα(R S) πα1(R) πα2(R)(προϋποθέσεις?)


    Equivalences3

    Αλγεβρικές ισοδυναμίες(Equivalences)

    • Αποδείξτε ότι:

    • Αποδείξτε ότι αν C = C1^C2^C3, όπου η C1 έχει γνωρίσματα μόνο της R και η C2 μόνο της S, τότε:

    R (S T) (T R) S

    σC1^C2^C3(R S) σC3(σC1(R) σC2(S))


    5092555

    Εκτίμηση/Υπολογισμός Κόστους

    • Για κάθε υποψήφιο σχέδιο, πρέπει να υπολογίσουμε (εκτιμήσουμε) το κόστος.

      • Πρέπει ναεκτιμήσουμε το κόστοςγια κάθε κόμβο.

        • Εξαρτάται από το μέγεθος των παιδιών.

        • Έχουμε συζητήσει διαφορετικές μεθόδους για τελεστές.

        • Επίσης εξαρτάται από το εάν εφαρμόζουμε pipelining ή οχι

      • Πρέπει να εκτιμήσουμε το μέγεθος του αποτελέσματοςγια κάθε κόμβο στο δέντρο και αν είναι ταξινομημένο!

        • Χρησιμοποιήση πληροφοριών για τις σχέσεις που συμμετέχουν.

        • Προσεγγιστικές τιμές στην καλύτερη περίπτωση.

        • Ιστογράμματα.


    5092555

    Εκτίμηση/Υπολογισμός Κόστους

    SELECT attribute list

    FROM relation list

    WHERE term1AND ... ANDtermk

    • Έστω ένα query block:

    • Maximum # πλειάδωνστο αποτέλεσμα είναι το γινό-μενοτων πλειάδων στις σχέσεις στο FROM clause.

    • Reduction factor (RF):συνδέεταιμε κάθε όροκαιδείχνειπόσο μειώνεται το αποτέλεσμα λόγω του όρου.Resultcardinality = Max # πλειάδων*γινόμενοόλων RF’s.

      • Θεωρούμε ότι οι όροι είναι ανεξάρτητοι!

      • Ο όροςcol=value έχει RF=1/NKeys(I), με ευρετήριο I στοcol

      • Ο όροςcol1=col2 έχει RF=1/MAX(NKeys(I1), NKeys(I2))

      • Ο όρος col>value έχει RF=(High(I)-value)/(High(I)-Low(I))


    5092555

    Εκτίμηση/Υπολογισμός Κόστους

    • Ιστογράμματα:

      • Έστω πίνακας με Ν τιμές, Ι ευρετήριο και συνθήκη col < value.

      • Ο συντελεστής ελάττωσης RF = (High(I) - τιμή)/(High(I)-Low(I)).

      • Αν δεν υπάρχει όμως ομοιόμορφη κατανομή?

      • Θέλουμε να προσεγγίσουμε όσο το δυνατόν καλύτερα την κατανομή των τιμών στο ευρετήριο Ι  ιστογράμματα.

      • Ιστογράμματα ίσου πλάτους ή ίσου βάθους.


    5092555

    Απαρίθμηση εναλλακτικών σχεδίων*

    • Υπάρχουν δύο περιπτώσεις:

      • Σχέδια ενός πίνακα

      • Σχέδια πολλαπλών πινάκων

    • Για ερωτήματα επί ενός πίνακα, αυτά αποτελούνται από συνδυασμό επιλογών, προβολών και συναθροίσεων:

      • Εξετάζεται κάθε δυνατή διαδρομή πρόσβασης (file scan / index), και επιλέγεται αυτή με το μικρότερο εκτιμώμενο κόστος.

      • Οι διαφορετικοί τελεστές εκτελούνται ουσιαστικά μαζί (π.χ., εάν ένα ευρετήριο χρησιμοποιηθεί για κάποια επιλογή, η προβολή γίνεται για κάθε ανακτώμενη πλειάδακαι το αποτέλεσμα δίνεται (pipelined)στον τελεστή συνάθροισης).


    5092555

    D

    D

    C

    C

    D

    B

    A

    C

    B

    A

    B

    A

    Απαρίθμηση εναλλακτικών σχεδίων*

    • Πολλαπλές σχέσεις. Θεμελιώδης απόφαση για το System R: εξετάζονται μόνο left-deep join trees (αριστερού βάθους).

      • Καθώς ο αριθμός των συζεύξεων αυξάνει, ο αριθμός των εναλλακτικών σχεδίων αυξάνει εκθετικά.Πρέπει να περιορίσουμε το χώρο αναζήτησης

      • Με ταδέντρααριστερού βάθους έχουμε πλήρως pipelined σχέδια.

        • Τα ενδιάμεσα αποτελέσματα δε γράφονται σε temporary αρχεία.

        • Προσοχή: Δεν επιδέχονται pipeline όλα τα δέντρα α.β. (π.χ., SM join)


    Highlights of system r optimizer

    Highlights of System R Optimizer

    • Impact:

      • Most widely usedcurrently; works well for < 10 joins.

    • Cost estimation: Approximate art at best.

      • Statistics, maintained in system catalogs, used to estimate cost of operations and result sizes.

      • Considers combination of CPU and I/O costs.

    • Plan Space: Too large, must be pruned.

      • Only the space of left-deep plans is considered.

        • Left-deep plans allow output of each operator to be pipelinedinto the next operator without storing it in a temporary relation.

      • Cartesian products avoided.


  • Login