Teil 6a

Werbung
Datenbankstatistiken
• Ziel: Selektivitäten von Prädikaten abschätzen.
• Anders ausgedrückt: Die Größe von
Zwischenergebnissen abschätzen.
• Anlegen von Statistiken:
analyze table R ...
• Syntax ist abhängig vom Datenbanksystem.
• Art der Statistiken ist abhängig vom System.
• Updates der Statistiken ist abhängig vom System:
– Explizit durch neues analyze (Oracle, IBM DB2, ...)
– Automatisch bei Änderungen (Microsoft SQL Server)
Art der Statistiken
• Größe von Tabellen
– Anzahl der Blöcke auf der Festplatte
– Anzahl der Tupel in der Tabelle
• Attributwerte
– größter und kleinster Wert
alternativ: zweitgrößter und zweitkleinster Wert
(Selektivität von Bereichsprädikaten)
– Anzahl unterschiedlicher Werte
(Gruppierung, Selektivität von Joinprädikaten)
• Clustereigenschaften von Indexen
– Z.B. Kosten eines kompletten Index Scans
Berechnung von Statistiken
• Volle Analyse einer Tabelle
– Parameter des analyze Statements bestimmen den
Umfang der Statistiken, die angelegt oder aktualisiert
werden
– Derzeit üblicher Ansatz in fast allen Systemen
• Sampling (Stichprobenverfahren)
–
–
–
–
Analysiert nur Teile einer Tabelle
Wird manchmal „on the fly“ eingesetzt
Evtl. spezielle Analyse von „Outliern“
Wird derzeit von fast keinem System unterstützt
Equi-Width Histogramme
100
90
80
70
60
50
40
30
20
10
0
20 bis 30
30 bis 40
40 bis 50
50 bis 60
60 bis 70
Equi-Depth Histogramme
60
50
40
30
20
10
0
20 bis 42
42 bis 48
48 bis 53
53 bis 59
59 bis 70
Berechnung von Selektivitäten
• Gleichverteilungsannahme: Innerhalb eines
Buckets eines Histogramms kommt jeder Wert
gleich häufig vor.
• Beispiel im Equi-Depth Histogramm: Wieviele
Professoren sind jünger als 45 Jahre?
• Antwort: 1 Bucket + ½ Buckets = 79
Selektivität des Prädikates: 78 / 260
• Wieviele Professoren sind jünger als 45 Jahre und
verdienen mehr als DM 100.000 im Jahr?
• Unabhängigkeitsannahme: multipliziere Selektiv.
Multi-Dimensionale Histogramme
60
50
40
70-100
100-150
150-250
30
20
10
0
20 bis 30 30 bis 40 40 bis 50 50 bis 60 60 bis 70
Herunterladen