Upload
lorelei-weirich
View
105
Download
1
Embed Size (px)
Citation preview
IBM DB2
Qiguang Yan & Stefan Lenschow
Seminar WS 2006/07:
Aktuelle Themen der Datenbankforschung und -entwicklung
Gliederung
I. Self – Healing • Health Monitor
II. Self – Configuring• Configuration
Advisor• Design Advisor
III. Self – Optimizing• Self-Tuning Memory• POP• LEO
IV. Zusammenfassung• Ausblick / Quellen
I.Self – Healing Features
• Vorher:– DBA betreut im Schnitt
über 20 Datenbanken– 33% Zeit: Monitoring– 22% Zeit: auf Probleme
reagieren
• self-healing in DB2 (V8.1) – kehrt Diagnosemodell des Gesundheitszustandes der DB um
• übernimmt Monitoring – Aufgaben• DB überwacht sich selbst• bietet Problemlösungen + Hilfe
Quelle: DB2Mag : Continuous System Health Checking
Monitoring33%
Problem Solving22%
Tuning12%
Development Support
33%
• 2 Tools :– Health Monitor(HM)
• Serverseitiges Tool
• Managed-by-Exeption Modell
• Überwacht komplettes System während der Ausführung (im Hintergrund)
– Health Center• Dient als GUI - Tool des HM
• Erweitert Informationen des HM um Lösungsstrategien
• Zur Veränderung der Einstellungen
• DB2 Health Monitor:– sammelt Systeminformationen per
Snapshot Monitor, was die Systemleistung
nur minimal beeinträchtigt– nutzt sog. „Health Indicators“ für:
• Instances
• Databases
• Logs
• Tablespace storage
• Sorting
• Package and catalog caches
• Workspaces
• Memory
• Application concurrency
– Die Indikatoren messen den „Gesundheitszustand“ eines Aspektes des ihm zugeordneten Objekts
• DB2 Health Indikatoren:– Zustände:
» normal
» attention» warning» alert
– ausgelöst, wenn Objektaspekt kritischen Zustand annimmt
– Kategorien:• Schwellwert-basierte Indikatoren, die Statistiken des
Verhaltens des Objektes überwachen
• Zustandsbasierte Indikatoren, die 2 oder mehr eindeutige Zustande überprüfen und damit Aussagen über kritisch oder unkritisch liefern
• Sammelzustandsbasierte Indikatoren, sind Maße des DB-Levels die angesammelte Zustände ein oder mehrerer Objekte repräsentieren
• Meldet alle Alarminfos dem Journal • Sendet diese via Email oder Pager zum DBA • Führt vorkonfigurierte Aktionen aus (z.B. Ausführen
eines tasks, selbständiges REORG eines tables)• Erkennt Situationen/ Veränderungen die
Performanceeinbußen nach sich ziehen könnten
• Mittels• Health Center ( Diagnosezentrale in dt. Version )• Web Health Center• Command Line Prozessor ( CLP )• APIs
lassen sich• Informationen des Health Monitors
abrufen• Healthindikatoren, Kontakte
konfigurieren• Überblick aller bisherigen Alarme anzeigen
• Fügt Warnzeichen in alle anderen laufenden DB2 UDB GUI Tools ein – mit Klick sofort zum Health Center wechseln
Health Center (V8.1):
DB2 Health Center
– bei Problemen meldet DB2 sich und gibt auch Lösungsvorschläge über den:
• Recommendation Advisor (RA) seit Ver.8.2
und gegebenes Problem zukünftig zu vermeiden– stellt dazu DBA Reihe von Fragen– basierend auf Antworten und aktuellem
Systemzustand
RA liefert verschiedene Lösungswege
– Entscheidung bestimmt wie der RA vorgeht– RA startet nötige Tools bzw. generiert automatisch
Scripts (z.B. Memory Visualizer)
Recommendation Advisor
II. Self – Configuring:Configuration Advisor
– Das Problem:• Fast 150 Konfigurationsparameter in DB2 UDB• Anwender wissen nicht:
– Wie die richtigen Werte gewählt werden
– Welche möglichen Zusammenhänge zwischen Ihnen bestehen
• Viele nicht online konfigurierbare Parameter zwang zum Neustart von DB2 um bessere Konfigurationen zu erstellen
• Aufgabe für erfahrene Spezialisten
• Configuration Advisor in DB2 UDB
(seit V.8.1) liefert Menge (~36) von
Parametereinstellungen zum automatischen Konfigurieren und Tunen der DB2 Umgebung in Bezug auf:
Speicherverteilung
ParallelitätI/O OptimierungenRecovery
• Daten, die ConfigAdv. automatisch erkennt :– Systeminfos
• # CPUs, # HDDs• Größe des
physikal.Speichers• Betriebsystem
– DB Infos• Größe, # Tables, • # Indizes• # Tablespaces
– Bufferpool Infos• # Bufferpools• Name, Größe für jeden
Bufferpool
• Daten, von User spezifiziert :– Antworten zu 7 Fragen:
• Prozentsatz des Speichers der DBMS zugeordnet wird
• OLTP vs. Complex Query vs. Mixed
• Rel. Verhältnis zwischen
Recovery Query
Geschwindigkeit• Lastprofil (Anzahl von
lokalen und entfernten Nutzerverbindungen)
• Ist Datenbank befüllt oder nicht
• Isolationsstufe• Bufferpoolgröße
veränderlich
• Jede Systeminformation wird nun mit einem mathematischen Modell kombiniert
• Basierend auf Expertenheuristiken
• Ermittelt Trade-Offs zwischen Memory Heaps, Parallelität, Skalierbarkeit die für Menschen schwer zu abstrahieren sind
Selbst-Konfigurations Fähigkeiten erlauben
ein Erkennen der Ausführungsumgebung
• Drei Ausführungsinterfaces : – Grafisches Interface ( Teil des DB2 Control
Center )– Command Level Interface (Bsp:
„db2 autoconfigure using MEM_PERCENT 75 WORKLOAD_TYPE complex IS_POPULATED yes NUM_LOCAL_APPS 1 NUM_REMOTE_APPS 50 ISOLATION rr BP_RESIZEABLE yes APPLY db AND dbm“
– Über programmierbare APIs (auch für Drittanbieter) oder Java Stored Procedures
Configuration Advisor: Grafisches Interface
Design Advisor
• Der Design Advisor generiert Empfehlungen für folgende Objekte und Maßnahmen:• Neue Indizes • Neue materialisierte Sichten (MQTs) • Umwandlung in MDC-Tabellen (mit
mehrdimensionalem Clustering) • Umpartitionierung von Tabellen • Löschen der unbenutzten Indizes und
materialisierte Sichten (MQTs).
Architektur des Design Advisors:
Workload für den Design Advisor :• Ein Workload ist eine Gruppe von
SQL-Anweisungen
Graphical User Interface
User
Eine Textdatei
SQL-Cache Package
Statische SQL-Anweisugn
Die vor kurzer Zeit ausgeführten SQL-Anweisungen im SQL-Cache
1. Der Workload wird in der Tabelle
ADVISE WORKLOAD gespeichert
2. GUI führt das Programm db2advis aus
3. Für jede SQL-Anweisung in der Tabelle ADVISE WORKLOAD ruft db2advis den DB2 UDB Optimizer auf
4. Basierend auf statistischen Daten schlägt der Optimizer einige Indizes vor.
5. Der Optimizer speichert die vorgeschlagenen Indizes in die Tabelle ADVISE INDEX
6. Die vorgeschlagenen Indizes werden getestet und dabei die beste Teilmenge von Indizes ausgewählt
7. Ergebnis ausgeben und bei Bedarf anwenden
• Jeder SQL-Anweisung kann eine Frequenz zugewiesen werden
• SQL-Anweisung kann geändert oder gelöscht werden
• Der Design Advisor schlägt einen Entwurf innerhalb von 10 Minuten vor. Der Entwurf enthält:
– 18 neue Indizes– 2 MQTs (materialisierte Sichten)– 6 MDC-Tabellen (mehrdimensionales
Clustering ), – 4 Partitionsveränderungen, – ….
Experiment
SELECT store_name, cust_name, SUM(sales) as ssFROM Trans T, Store S, Cust CWHERE T.store_id = S.store_id AND T.cust_id = C.cust_id WHERE cust_age >= ANY (SELECT AVG(C2.cust_age) FROM Cust C2 GROUP BY C2.cust_name)
SELECT store_name, SUM(sales) as ssFROM Trans T, Store S, Cust CWHERE T.store_id = S.store_id AND T.cust_id = C.cust_id WHERE year = 2002 and cust_age <= ALL (SELECT AVG(C2.cust_age) FROM Cust C2 GROUP BY C2.cust_name)GROUP BY store_name
SELECT C2.cust_name, AVG(C2.cust_age) FROM Cust C2 GROUP BY C2.cust_name
Query 1 Query 2
Subexpression MQT Query
Suchen nach den gemeinsamen Subexpressions bei der Multi-query Optimierung
Beispiel
III.Self-Optimizing Self – Tuning Memory• Vorher:
– Es ist schwer, die maximale Größe eines Speicherobjekts zu bestimmen.
– die maximale Größe kann nicht überschritten werden
• Das führt dazu:– Wenn z.B ein Bufferpool nicht groß genug für die
Datenspeicherung ist, werden die Daten aus dem Bufferpool entfernt und beim nächsten Zugriff wieder in den Bufferpool eingelesen. (Performance sinkt)
• in DB2 UDB Version 9– Heapgröße, Bufferpool, Cache etc.
dynamisch konfigurieren– Garantierte Minimum für Heap, Bufferpool etc. – nicht reservierte Speicherbereiche für Heap ,
Bufferpool etc. nach Bedarf allokieren
• Folgende Speicherressourcen können getunet werden– Buffer pools – Package cache – Locking memory – Sort memory – Total database shared memory
Database memory
Cost-benefit Daten für jeden Heap
Neue Größe für Heaps und Databas_memory
•Bestimmt neue Speicherallokation
•Legt die Frequenz des Tunings fest
•…..
Self-Tuning Memory Manager
Beispiel
Wirkung von Memory-Tuning auf Systemperformance
Automatisch wird mehr Speicher DB2 zugewiesen
Systemleistung steigt sofort um Faktor 10
Progressive OPtimization (POP)
• Problem:– Sub-optimale QEPs( Query Execution Plan) durch Fehler in
Kardinalitätsabschätzungen des Optimierers
• POP– liefert flexible Mechanismen zur Erstellung von QEPs– erkennt suboptimale QEPs und liefert Optimierungen zur
Laufzeit – robust gegen Fehlabschätzungen des Optimierers– minimiert DBA Eingriffe
Optimizer
Best Plan
Plan Execution
Optimizer
Best Plan
StatisticsSQL Compilation
Vorher:
• Pläne mit Hilfe von Statistiken erstellt
• Problem:
• nicht mehr aktuelle Statistiken
• falsche Vermutungen über Attributsunabhängigkeiten
führen zu falschen Kardinalitäts-abschätzungen und damit zu suboptimalen Plänen
• POP vergleicht Kardinalitäts-abschätzungen mit aktuellen Werten zur Laufzeit
• geschieht mit Checkpoints (CHECK)• haben Bedingung, die Kard.grenzen erkennt
in denen der Plan gültig ist = validity range für jeden einzelnen Planoperator
• Wird CHECK Bedingung verletzt (validity range überschritten) Re-Optimization ausgelöst
• erlaubt kontinuierliche Anpassungen des Plans durch einen geschlossenen Feedbackkreis zwischen Laufzeit und Optimierer
Optimizer
Best Plan
Plan Execution
with CHECK
Optimizer
Best PlanWith CHECK
StatisticsSQL Compilation
“MQT”with Actual
Cardinality
Re-optimize If CHECK fails
Partial Results
New Best Plan
New Plan
Execution
1
2
34
5
6 Use feedback from cardinality errors toimprove current plan
Jetzt:
POP Monitor :
Beispiel:
Der LEarning Optimizer (LEO)• erkennt Fehler bei der
Kardinalitätsabschätzung
• korrigiert falsche Statistiken zur Laufzeit
• „lernt“ mit Hilfe eines Feedback-Mechanismus aus Fehlern
Optimizer
Best Plan
Plan Execution
Optimizer
Best Plan
StatisticsSQL Compilation
•
Plan Execution
Optimizer
Best Plan
Plan Execution
Optimizer
Best Plan
Statistics
Adjustments
SQL Compilation
Actual Cardinalities
Estimated Cardinalities
2. Monitor
3. Analyse
4. Anwendung
Adjustments
EstimatedCardinalities
ActualCardinalities
1. Planbewahrung
Beispiel
Berechnung des Anpassungsfaktors
• Vergleiche geschätzte mit der tatsächlichen Selektivität• Mit hoher Wahrscheinlichkeit liegt ein Fehler vor, wenn
gilt:
Berechnung des Anpassungsfaktors
Bestimme den Anpassungsfaktor für das Prädikat (X.Price > 100)
IV. Zusammenfassung
• Seit Ver.8.1 stetige Erweiterung der autonomen Fähigkeiten
• In Ver.9 neue adaptive, self-tuning memory Features
• Ausblick:– Weiterentwicklung bestehender Features für einen
höheren Autonomiegrad– Einführung von self-protecting Features um DB
unverwundbarer zu machen bezüglich:• Unauthorisiertem Zugriff und Nutzung• Virus- / Denial-of-service Angriffen• Und generellen Fehlern
Quellen:• Kwan,Lightstone,Schiefer,Storm,Wu (IBM Canada) : Automatic Database
Configuration for DB2 UDB: Compressing Years of Performance Expertise into Seconds of Execution
• Kache,Shin Han,Markl,Raman,EwenPOP/FED: Progressive Query Optimization for Federated Queries in DB2
• Javaid Rajmohamed for DB2Mag: Continuous System Health Checking• Markl,Raman,Simmen,Lohman,Pirahesh,Cilimdzic: Robust Query
Processing through Progressive Optimization• Gary Valentin, Michael Zuliani, Daniel C. Zilio: DB2 Advisor: An Optimizer
Smart Enough to Recommend Its Own Indexes• by V. Markl, G. M. Lohman, V. RamanLEO: An autonomic query optimizer
for DB2• Adam J. Storm, Christian Garcia-Arellano, Sam S. Lightstone, Yixin
Diao:Adaptive Self-Tuning Memory in DB2