Umformungsregeln E1 >◁ E2 ≡ E2 >◁ E1 E1 × E2 ≡ E2

Transcrição

Umformungsregeln E1 >◁ E2 ≡ E2 >◁ E1 E1 × E2 ≡ E2
Logische Optimierung
Umformungsregeln
Eine Reihe von Regeln, die auf der Relationalen Algebra
aufbauen, erlauben die Umformung der Anfrage:
Regeln für Verbund und kartesisches Produkt
(1) Kommutativität
E1 E2 ≡ E2 E1
E1 × E2 ≡ E2 × E1
(2) Assoziativität
E1 (E2 E3) ≡ (E1 E2) E3 .
E1 × (E2 × E3) ≡ (E1 × E2) × E3 .
Regeln für Selektion und Projektion
(3) Zusammenfassung von Projektionen
Bedingungen:
{Ai  i = 1, ..., n} ⊆ {Bi i = 1, ..., m}.
πAi,...,An(πB1,...,Bm(E)) ≡ πA1,...An(E).
(3) Zusammenfassung/Kommutativität von
Selektionen:
σF1(σF2(E)) ≡ σF2∧F1(E).
σF1(σF2(E)) ≡ σF2(σF1(E)).
Grundlagen der Datenbanksysteme I
VIII-13
Logische Optimierung
(5) Kommutativität Selektion-Projektion
Bedingung F bezieht sich nur auf Attribute Ai:
πA1,...,An(σF(E)) ≡ σF(πA1,...,An(E)).
Bedingung F bezieht sich auf alle Attribute B
und möglicherweise auf Attribute Ai:
πA1,...,An(σF(E)) ≡
πA1,...,An(σF(πA1,...,An,B1,...,Bm(E))).
(6) Kommutativität Selektion-Kartesisches Produkt
Bedingung F = F1 ∧ F2 bezieht sich auf
Attribute von E1 und E2
Fi bezieht sich nur auf Attribute von Ei
σF(E1 x E2) ≡ σF1(E1) x σF2(E2).
F1 bezieht sich nur auf Attribute von E1, F2
bezieht sich auf Attribute von E1 und E2
σF(E1 x E2) ≡ σF2(σF1(E1) x E2).
(7) Kommutativität Selektion-Vereinigung
σF(E1 ∪ E2) ≡ σF1(E1) ∪ σF2(E2).
(8) Kommutativität Selekton-Mengendifferenz
σF(E1 - E2) ≡ σF1(E1) - σF2(E2).
Grundlagen der Datenbanksysteme I
VIII-14
Logische Optimierung
(9) Kommutativität Projektion-Kartesisches Produkt
Bi sind Attribute von E1, Ci sind Attribute von E2.
{Ai | i = 1,..,n} = {Bi | i = 1,...,m} ∪ {Ci | i = 1,...,k}
πA1,...,An(E1 x E2) ≡
πB1,...,Bm(E1) x πC1,...,Ck(E2).
(10) Kommutativität Projektion-Vereinigung
πA1,...,An(E1 ∪ E2) ≡ πA1,...,An(E1) ∪
πA1,...,An(E2).
Der Verbund ist hierbei darstellbar als Kombination von
kartesischem Produkt, Projektion und Selektion, deshalb
folgen die Regeln für Kommutativität von Selektion und
Verbund aus (4), (5) und (6).
Achtung: Es gilt keine Kommutativität zwischen
Mengendifferenz und Projektion!
Grundlagen der Datenbanksysteme I
VIII-15
Logische Optimierung
Ein einfacher Optimierungsalgorithmus:
(1) Umformulierung der Anfrage, so daß nur noch
Grundoperationen verwendet werden.
(Auflösung der Verbünde und Divisionen)
(2) Zuordnung der Attribute zu den Relationen (Volle
Qualifizierung)
(3) Aufstellen des Operatorbaumes
(4) Zerlegung der Selektionen der Art σF1 ∧ ... ∧ Fn(E)
nach Regel (4) in σF1(...(σFn(E))...).
(5) Verlagerung der Selektionen soweit wie möglich in
Richtung Blätter mit Regeln (4) - (8).
(Selektionen, die sich nur auf ein Attribut und eine
Konstante beziehen, können fast immer zu ihrer
Relation wandern)
(6) Zusammenfassung aller direkt
aufeinanderfolgenden Selektionen zu einer
einzigen Selektion
(7) Verlagerung der obersten Projektion mit Regeln
(3), (5), (9) und (10) durch den Baum bis hin zu den
Blättern. (Bei binären Operationen aufspalten)
(8) Ergebnisangabe als Relationaler Ausdruck.
Grundlagen der Datenbanksysteme I
VIII-16
Logische Optimierung
Beispiele:
BOOKS (TITLE,AUTHOR,PNAME,LC_NO)
PUBLISHERS (PNAME,PADDR,PCITY)
BORROWERS (NAME,ADDR,CITY,CARD_NO)
LOANS (CARD_NO,LC_NO,DATE)
PNAME = publisher’s name
LC_NO = Library of Congress number
PADDR = the street address of a publisher
PCITY = the city in which a publisher is located
CARD_NO = the library card number
DATE = the date on which a book was borrowed
Grundlagen der Datenbanksysteme I
VIII-17
Logische Optimierung
Beispiel 1
σ CITY = ' Frankfurt ' ∧ DATE <1.1.1997 ( BOOKS >< LOANS >< BORROWERS)
σ
BOOKS
BORROWERS
LOANS
Assoziativität des
Verbundes
(2) (6)
Kommutativität
Selektion /
kartesisches
Produkt
BOOKS >< (σ CITY = ' Frankfurt ' ∧ DATE <1.1.1997 ( LOANS >< BORROWERS) )
BOOKS
σ
LOANS
Grundlagen der Datenbanksysteme I
BORROWERS
VIII-18
Logische Optimierung
Beispiel 1 (Fortsetzung)
BOOKS >< (σ CITY = ' Frankfurt ' ∧ DATE <1.1.1997 ( LOANS >< BORROWERS) )
Kommutativität
Selektion /
kartesisches
Produkt
(6)
BOOKS >< ( σ DATE <1.1.1997 ( LOANS) >< σ CITY = ' Frankfurt ' ( BORROWERS) )
BOOKS
σ
LOANS
Grundlagen der Datenbanksysteme I
σ
BORROWERS
VIII-19
Logische Optimierung
Beispiel 2
π NAME,CARD_ NO,DATE (σ TITLE = 'DATABASES' ( BOOKS )
>< ( LOANS >< BORROWERS ) )
π
σ
BOOKS LOANS BORROWERS
Assoziativität
des Verbundes
(2) (3) (9)
Kommutativität
Selektion
(Projektion)/
kartesisches
Produkt
π NAME,CARD_ NO,DATE (
π CARD_ NO,DATE (σ TITLE = 'DATABASES' ( BOOKS )>< LOANS )
>< BORROWERS )
Grundlagen der Datenbanksysteme I
VIII-20
Logische Optimierung
Beispiel 2 (Fortsetzung)
π NAME,CARD_ NO,DATE (
π CARD_ NO,DATE (σ TITLE = 'DATABASES' ( BOOKS )>< LOANS )
>< BORROWERS )
π
π
BORROWERS
σ
LOANS
BOOKS
Grundlagen der Datenbanksysteme I
VIII-21
Logische Optimierung
Beispiel 3 (Ullman)
XLOANS = π S (σ F ( LOANS × BORROWERS × BOOKS ) )
mit:
F ≡ BORR. CARD _ NO = LOANS . CARD _ NO ∧
BOOKS . LC _ NO = LOANS . LC _ NO
S ≡ TITLE , AUTHOR, PNAME , LC _ NO, NAME ,
ADDR, CITY , CARD _ NO, DATE
π TITLE ( σ DATE <1/1/82 ( XLOANS ) )
Schritt 1: Teilen der Selektion F in F1 und F2:
F1 ≡ BORR. LC _ NO = LOANS . LC _ NO
F2 ≡ BOOKS . CARD _ NO = LOANS . CARD _ NO
Schritt 2: Selektionen den Baum „hinunterbewegen“
( (
))
π TITLE π S σ F 2 (σ F 1(σ DATE <1/1/82 ( LOANS ) × BORR) × BOOKS )
Grundlagen der Datenbanksysteme I
VIII-22
Logische Optimierung
Schritt 3: Vereinigung der beiden Projektionen zu:
π TITLE
Schritt 4: Aufspalten der Folge
π TITLE ( σ F 2 (Κ ) )
mit Regel 5 in:
( (
π TITLE σ F 2 π TITLE , BOOKS . LC _ NO , LOANS . LC _ NO (Κ )
))
Dann Aufspalten der zweiten Projektion nach Regel 9:
π TITLE , BOOKS . LC _ NO und π LOANS . LC _ NO
(
π TITLE ( σ F 2 π LOANS . LC _ NO ( σ F 1( σ DATE <1/1/82 ( LOANS )
× BORR ) ) × π TITLE , BOOKS . LC _ NO ( Books) ))
Grundlagen der Datenbanksysteme I
VIII-23
Logische Optimierung
Schritt 5: Aufspalten der Folge
π LOANS . LC _ NO ( σ F 1(Κ ) )
mit Regel 5 in:
( (
π LOANS . LC _ NO σ F 1 π LOANS . LC _ NO , BORR.CARD _ NO , LOANS .CARD _ NO (Κ )
Schritt 6:Die zweite Projektion aufspalten und vor das
kartesische Produkt bringen (Regeln 5 und 9):
(
π TITLE ( σ F 2 π LOANS . LC _ NO ( σ F 1( π LOANS . LC _ NO , LOANS .CARD _ NO (
σ DATE <1/1/82 ( LOANS ) ) × π BORR .CARD _ NO ( BORR ) ))
× π TITLE , BOOKS . LC _ NO ( Books) ))
Grundlagen der Datenbanksysteme I
VIII-24
))
Logische Optimierung
Beispiel: Kartesisches Produkt
AB
CD
nCD (Datensätze)
nAB
Strategie: Lade so viele Blöcke von AB wie möglich in
den Hauptspeicher und lasse dabei Platz für
einen Block von BC.
AB
CD
m Hauptspeicher-Blöcke
•
n AB , nCD : Sätze.
•
bAB , bCD : Sätze/Block.
•
m : Anzahl der Blöcke im Hauptspeicher.
Grundlagen der Datenbanksysteme I
VIII-25
Logische Optimierung
• Anzahl der Block-Zugriffe um AB zu lesen: n AB b AB .
• CD muss
n AB (m − 1) b AB - mal gelesen werden.
Jedes Mal werden dazu nCD bCD Zugriffe benötigt.
Anzahl der Block-Zugriffe:
n AB
n AB
n
+
⋅ CD =
bAB (m − 1) − bAB bCD

n AB 
nCD
⋅ 1 +

bAB  (m − 1) b CD 
Grundlagen der Datenbanksysteme I
VIII-26
Logische Optimierung
Beispiel:
n AB = nCD = 10 000
bAB = bCD = 5
m = 100
Anzahl der Zugriffe = 42.400.
Bei 20 Block-Zugriffen pro Sekunde wird dieses
kartesische Produkt ca. 35 Minuten benötigen.
Wähle AB als die Relation, mit dem kleineren
Quotienten
n AB
.
bAB
Das heißt, die Relation, die in weniger Blocks
passt.
Grundlagen der Datenbanksysteme I
VIII-27

Documentos relacionados