Implementierung von Datenbanksystemen - VSIS Homepage · Implementierung von Datenbanksystemen (WS07/08) Implementierung von Datenbanksystemen Kapitel 3: Pufferverwaltung Teile dieses
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Implementierung von Datenbanksystemen (WS07/08)
Implementierung von Datenbanksystemen
Kapitel 3: Pufferverwaltung
Teile dieses Foliensatzes beruhen auf ähnlichen Vorlesungen, gehalten von Prof. Dr. T. Härder am Fachbereich Informatik der Universität Kaiserslautern und Prof. Dr. B. Mitschang / Dr. Holger Schwarz am Fachbereich Informatik der Universität Stuttgart. Für das vorliegende Material verbleiben alle Rechte(insbesondere für den Nachdruck) bei den Autoren.
• Jede Datenanforderung ist eine logische Seitenreferenz.Seitenreferenzstring (SRS)R = <r1, r2, ... ri, ... Rn > mit ri = ( Ti, Di, Si)
Ti zugreifende TransaktionDi referenzierte DB-PartitionSi referenzierte DB-Seite
• Aufgabe der DB-Pufferverwaltung:Minimierung der physischen Seitenreferenzen
• Bestimmung von Ausschnitten aus R bezüglich bestimmter Transaktionen, Transaktions-Typen und DB-Partitionen sinnvoll zur Analyse des Referenzverhaltens
• Wie kann Referenzstring-Information verwendet werden fürCharakterisierung des Referenzverhaltens?Bestimmung von Lokalität und Sequentialität?Unterstützung einer effektiven Seitenersetzung?
• ImplementierungErsetzungsalgorithmen im DB-Puffer in Software implementiertSeitenersetzung in Adressräumen bei virtuellem Speicher ist Hardware-gestützt
• Seitenreferenz vs. Adressierungnach einem FIX-Aufruf kann eine DB-Seite mehrfach bis zum UNFIX referenziertwerdenunterschiedliches Seitenreferenzverhalten andere Ersetzungsverfahren?
In existierenden Dateisystemen nicht immer möglichSelektives Ausschreiben von Seiten zu bestimmten Zeitpunkten (z. B. für Logging)
Normale Dateisysteme bieten keine geeignete Schnittstelle für Prefetching
In DBMS ist aufgrund von Seiteninhalten oder Referenzmustern eine Voraussage des Referenzverhaltens (z. B. bei Tabellen-Scans) möglich; Prefetching erzielt in solchen Fällen eine enorme Leistungssteigerung
BS-Ersetzungsverfahren sind z.B. nicht auf zyklisch sequentielle oder baumartige Zugriffsfolgen abgestimmt
DB-spezifische Referenzmuster sollen unterstützt werden
Zugriff auf Dateipuffer ist teuer (supervisor call)effizienter Pufferzugriff
Bewertung der verfügbaren BS-FunktionalitätWichtige Aspekte für den Datenbankpuffer
• SRS weisen typischerweise Phasen von Sequentialität und Lokalität auf• Sequentielle Zugriffsfolge (SZ):
Zwei aufeinander folgende Referenzen ri und ri+1 gehören zu einer sequentiellen Zugriffsfolge, falls sie gleiche oder benachbarte DB-Seiten referenzieren
• AlgorithmusSeitenreferenzstring wird vollständig durchmustert; alternativ kann die Folge der ankommenden Referenzen analysiert werdenSolange obige Bedingung erfüllt ist, gehören alle aufeinander folgenden Referenzen zu einer SZ, sonst beginnt eine neue SZ
• Länge einer sequentiellen Zugriffsfolge (LSZ):LSZ ist die Anzahl der verschiedenen in SZ referenzierten SeitenBsp.:Referenzstring A A B B D E E F F H enthält drei SZ:(A A B B)1 mit LSZ(1) = 2(D E E F F)2 mit LSZ(2) = 3(H)3 mit LSZ(3) = 1
• Maß für Sequentialität:Die kumulative Verteilung der SZ-Längen LSZ(i) wird berechnet S(x) = Pr (SZ-Länge <= x)Für obiges Beispiel gilt: S(1) = 0.33, S(2) = 0.67, S(3) = 1.0
• Bei Sequentialität Optimierung durch (asynchrones) Prefetching von DB-Seiten möglich
• Working-Set W(t,s): Seiten, die von der betrachteten Transaktion innerhalb der letzten s Referenzen (Fenstergröße) bezogen auf Zeitpunkt t angesprochen wurden.
• Working-Set-Größew (t,s) = |W(t,s)|
• Working sets W (t1, 8) = {A, B, C} W (t2, 8) = {A, B, C, D, E, F, G, H}w (t1, 8) = 3 w (t2, 8) = 8
• Aktuelle Lokalität: Mittlere Lokalität:(n = Länge desReferenzstrings)
• Wie lässt sich Lokalität charakterisieren?LRU-Stacktiefenverteilung liefert Maß für die Lokalität (präziser als Working-Set-Ansatz)LRU-Stack enthält alle bereits referenzierten Seiten in der Reihenfolge ihres Zugriffsalters
• Bestimmung der Stacktiefenverteilung:pro Stackposition wird Zähler geführtRereferenz einer Seite führt zur Zählererhöhung für die jeweilige Stackposition
• Zählerwerte entsprechen der WiederbenutzungshäufigkeitFür LRU-Seitenersetzung kann aus der Stacktiefenverteilung für eine bestimmte Puffergröße unmittelbar die Trefferrate (bzw. Fehlseitenrate) bestimmt werden
• Pro Pufferpartition P soll Working-Set im Puffer bleiben; Seiten, die nicht zum Working-Set gehören, können ersetzt werden
• Bei Fehlseitenbedingung muss Working-Set bekannt sein, um Ersetzungskandidat zu bestimmen
Fenstergröße pro Partition: s (P)Referenzzähler pro Partition: RZ (P)letzter Referenzzeitpunkt für Seite i: LRZ (P, i)ersetzbar sind solche Seiten, für die gilt: RZ (P) — LRZ (P, i) > s (P)
• Referenzverhalten in DBStypischerweise hohe Lokalität: Optimierung durch Ersetzungsverfahrenmanchmal Sequentialität oder zufällige Arbeitslast (RANDOM-Referenzen)Grenzfälle des Referenzverhaltens und der Ersetzungsverfahren zeigen Optimierungsmöglichkeiten auf.
• Kombinationen:
• Prinzipielle Zusammenhänge, welche die Fehlseitenrate bestimmen
• Die älteste Seite im DB-Puffer wird ersetzt• Referenzen während des Pufferaufenthaltes werden nicht berücksichtigt• Nur für strikt sequentielles Referenzierungsverhalten geeignet
• Erweiterung von FIFO• Pro Seite wird ein Referenzbit geführt
wird bei jeder Referenz gesetzt
• Fehlseitenbedingung:zyklische Suche bis zur ersten Seite mit zurückgesetztem BitZurücksetzen des Referenzbits für alle besuchten Seiten mit gesetztem Bit
• Annähernde Berücksichtigung des letzten Referenzierungszeitpunkts
• Pro Seite wird ein Referenzzähler (RZ) geführt (statt Bit)
wird bei Erstreferenz auf Ei gesetztwird bei jeder weiteren Referenz um Wi erhöht
• Fehlseitenbedingung:zyklische Suche bis zur ersten Seite mit RZ=0Dekrementierung des Zählers für alle besuchten Seiten mit RZ>0
• Verfahrensparameter: Ei: Initialwerte für ReferenzzählerWahl des DekrementesWi: Zähler-Inkrementierung beierneuter ReferenzVergabe von seitentyp- oder seitenspezifischen Gewichten
• AlgorithmusWenn eine Seite ersetzt werden muss, wird die Referenzdichte aller Seiten im DB-Puffer bestimmtReferenzdichte = Referenzhäufigkeit in einem bestimmten ReferenzintervallErsetzungskandidat ist Seite mit geringster Referenzdichte
• Variante 1: Referenzintervall entspricht Alter einer Seite
• Berechnung der Referenzdichte:Globaler Zähler (GZ):Gesamtanzahl aller ReferenzenEinlagerungszeitpunkt (EZ):GZ-Wert beim Einlesen der SeiteReferenzzähler (RZ)
• Variante 2: konstante IntervallgrößeKünstliches Altern von Seiten: Ältere Referenzen werden bei der Bestimmung der Referenzdichte geringer bewertet Periodisches Reduzieren der Referenzzähler, um Gewicht früher Referenzen zu reduzierenReduzierung von RZ durch Division oder Subtraktion:
• Aufzeichnung der K letzten Referenzzeitpunkte (pro Seite im DB-Puffer)Gegeben sei bis zum Betrachtungszeitpunkt t der Referenzstring r1, r2, ... , rt. Rückwärtige K-Distanz bt(P, K) ist die in Referenzen gemessene Distanz rückwärts bis zur K-jüngsten Referenz auf Seite P:bt(P, K) = x, wenn rt-x den Wert P besitzt und es genau K-1 andere
Werte i mit t-x < i ≤ t mit ri = P gab.bt(P, K) = ∞, wenn P nicht wenigstens K mal in r1, r2, ..., rt
• Merkmale:Aufwändigere AufzeichnungMethode benötigt kein explizites „Altern“Bei Ersetzung werden die bt(Pi, K) der Pufferseiten benötigt! Sonderbehandlung für Seiten mit bt(P, K) = ∞
• Wie hängt LRU-K mit LRD zusammen? Approximation der Referenzdichte?• LRU-2 (d.h. K=2) stellt i.A. die beste Lösung dar
ähnlich gute Ergebnisse wie für K > 2, jedoch einfachere Realisierungschnellere Reaktion auf Referenzschwankungen als bei größeren K
• Internes Thrashing:Zyklisches Referenzieren (Loop) einer Menge von Seiten mit #Seiten > #RahmenAuswirkung: Häufigkeit der Seitenersetzung steigt stark an
• Externes Thrashing:T1: sehr schnelle Seitenanforderungen (wahlfrei oder sequentiell)Ti: langsame Seitenanforderungen für eine Seitenmenge (#Seiten < #Rahmen), die zyklisch referenziert wirdAuswirkung: Seiten der Ti werden auch bei hoher Referenzlokalität verdrängt
• WS-Modell:Es wird versucht, w(t,s) Rahmen zu allokierenBei sequentiellem Scan hätte ein Rahmen genügt
• Zugriffspläne durch Anfrage-OptimiererZugriffscharakteristik/Menge der referenzierten Seiten kann bei der Erstellung von Plänen vorausgesagt/abgeschätzt werdenZugriffsmuster enthält immer Zyklen/Loops (mindestens Kontrollseite –Datenseite, nested loop join etc.)Kostenvoranschläge für Zugriffspläne können verfügbare Rahmen berücksichtigenBei Ausführung wird die Mindestrahmenzahl der Pufferverwaltung mitgeteilt
• Bevorzugung bestimmter Transaktionstypen/DB-Partitionen vielfach wünschenswert (z.B. um Benachteiligungen durch sehr lange TA oder sequentielle Zugriffe zu vermeiden)
• Berücksichtigung von Prioritäten bei der Pufferverwaltung• Verfahren PRIORITY-LRU:
pro Prioritätsstufe eigene dynamische PufferpartitionLRU-Kette pro PartitionPriorität einer Seite bestimmt durch DB-Partition bzw. durch (maximale) Priorität referenzierender Transaktionen ersetzt wird Seite aus der Partition mit der geringsten Priorität.Ausnahme: die w zuletzt referenzierten Seiten sollen (unabhängig von ihrer Priorität) nicht ersetzt werden
• Kompromiss zwischen Prioritäts- und absolutem LRU-Kriterium möglich
• Seitengröße:keine beliebigen Seitengrößen (Fragmentierung, Abbildung auf Externspeicher)Seitenlänge (SL) als Vielfaches eines Einheitsrasters (Transporteinheit, Rahmengröße im Puffer)Beispiel: SL = 1, 2, 4, ..., 2n • Rahmengröße (n ≤ 8)
• Trennung von Seite und Rahmen (Rastergröße)
• Schnittstellenforderung: Zusammenhängende Speicherung der Seite im Puffer
• Buddy-System (BS-Algorithmus)(Verwaltung variabler Bereiche:frei(f) / belegt(b)festes Raster, hierarchischer VergabemechanismusSuche nur in freien Bereichen (belegte Bereiche können nicht verschoben werden)Zusammenfassung von freien Neffen aufwendig
• Zustände von Seiten/Rahmenfrei: keine Seite vorhandenunfixed: Seite ist ersetzbar/verschiebbarfixed: Seite muss Pufferadresse behalten
• Vermeidung von SeitenersetzungenUmlagern von Seiten mit Unfix-Vermerk und “hoher” Wiederbenutzungswahrscheinlichkeit
• Suche nach “bestem” Ersetzungskandidaten• Was heißt “bester” Ersetzungskandidat?
Wiederbenutzungs-Wahrscheinlichkeit: Anzahl der Referenzen, Alter, letzte Referenz einer SeiteFragmentierung/Lückenbenutzung: first fit, best fitRahmeninhalte: Anteil ersetzbarer und freier RahmenAnzahl der zu ersetzenden Seiten zur Platzbeschaffung für eine neue Seite
• Kombination von Ersetzung und Umlagern von Seitensehr komplexe Entscheidungssituation
• Alternative: Partitionierung des DB-Puffers für Seiten gleicher Größe (und anwendungsabhängige Ersetzungsverfahren)
Zusammenfassung• Referenzmuster in DBS sind Mischformen
sequentielle, zyklische, wahlfreie ZugriffeLokalität innerhalb und zwischen Transaktionen„bekannte“ Seiten mit hoher ReferenzdichteErkennen von Scan-basierter Verarbeitung
• Ohne Lokalität ist jede Optimierung der Seitenersetzung sinnlos (~ RANDOM)• Suche im Puffer durch Hash-Verfahren• Speicherzuteilung:
global ⇒ alle Pufferrahmen für alle Transaktionen (Einfachheit, Stabilität, ...)lokal ⇒ Sonderbehandlung bestimmter TAs/Anfragen/DB-Bereiche
Prefetching und Pipelining mit Wechselpuffer„zu genaue“ Verfahren sind schwierig einzustellen (⇒ instabil)Nutzung mehrerer Kriterien: Alter, letzte Referenz, ReferenzhäufigkeitCLOCK ~ LRU, aber einfachere ImplementierungGCLOCK, LRD, LRU-K relativ komplexLRU-2 guter Kompromiss; vorletzter Referenzzeitpunkt bestimmt „Opfer“
• Erweiterte ErsetzungsverfahrenNutzung von Zugriffsinformationen des Anfrage-Optimierers Hot Set Model Einsatz vieler Puffer zur Separierung von Lasten verschiedenen Typs, optimiert für spezifische Datentypen
[EH84] W. Effelsberg, T. Härder: Principles of Database Buffer Management. In: ACM TODS Vol. 9, No. 4, 1984.
[JC+90] R. Jauhari, M.J. Carey, M. Livny: Priority-Hints: An Algorithm for Priority-Based Buffer Management. In: Proc. 16th VLDB Conf., 1990.
[OO+93] E. J. O‘Neil, P. E. O‘Neil, G. Weikum: The LRU-K Page Replacement Algorithm for Database Disk Buffering. In: Proc. ACM SIGMOD Conf. Washington. D.C., 1993.
[Sik88] A.Sikeler: VAR-PAGE-LRU—A Buffer Replacement Algorithm Supporting Different Page Sizes. In: Proc. Extending Database Technology, 1988.
[KW98] A. Kraiss, G. Weikum: Integrated Document Caching and Prefetching in Storage Hierarchies Based on Markov-Chain Predictions. VLDB Journal, 1998.