Zugriffspfad

Werbung
DB2
SYSUSERDAY 2009
Methoden und Techniken
zur Stabilisierung von
Datenbank Zugriffspfaden
Thomas Baumann
Die Mobiliar, Bern, Schweiz
Agenda
Überraschende Mess Ergebnisse
• V8  V9 CM Migrations Beispiel
• Static SQL
Zugriffs
Pfad
Fallback
... und
warum„s dies
ausgerechnet
für V9 gibt
• Reduziere Faktoren für Zugriffspfad
Instabilität der Schlüssel zur Zugriffspfad Stabilität
• Kleine Ueberlebenshilfe für Dyn SQL
Zugriffspfad
was Fallback
schiefgehen kann, wird schiefgehen…
• Applikations Profile the new kid on the block
DB2
SYSUSERDAY 2009
2
Swiss Mobiliar: Key Facts at
a Glance
(2008-12-02 @ 10:40 AM)
DB2P Data Sharing Group
(V8 New Function Mode)
DB1P
DB2P
DB3P
31K
GetPage
Requests
Bpools
(14 GByte)
Global Dyn Stmt Cache
(640 MByte)
IMS/TM
Application
Server
Services
6485 static SQL Queries*) / second
(+10.6%)
601 dynamic SQL Queries*) / second (+34%)
*) 1
DB2
SYSUSERDAY 2009
open / n fetch / 1 close = 1 Query
3
Disclaimer
•
•
The Information contained in this presentation has not
been submitted to any formal Swiss Mobiliar or other
review and is distributed on an „as is„ basis without any
warranty either expressed or implied. The use of this
information is the user„s responsibility.
The procedures, results and measurements presented in
this paper were run in either the test and development
environment or in the production environment at Swiss
Mobiliar in Berne, Switzerland. There is no guarantee that
the same or similar results will be obtained elsewhere.
Users attempting to adapt these procedures and data to
their own environments do so at their own risk. All
procedures presented have been designed and developed
for educational purposes only.
DB2
SYSUSERDAY 2009
4
V8  V9 CM Migration
• Wieviele Queries ändern Zugriffspfad?
• Statistik über Zugriffs Pfad Aenderungen
Die DB2
Migrate
Optimizer
Runstats
Rebind
Runstats
Rebind
to V9 CM
Engine
ändert
im CM
Compare Access Paths
(conversion
•Vergleich von 22793 Queries
mode)
•4855 Queries mit geändertem Zugriffspfad (21.3%)
•Query zur Ermittlung dieser Daten in Notizenseiten
DB2
SYSUSERDAY 2009
5
V8  V9 CM Migration
• Einige detailliertere Zahlen
• Unterschiede in PREFETCH („S‟ vs. ‟D‟) ausgeblendet
• V9 CM: Wechsel von sequential zu dynamic
• Noch immer 17.7% aller Queries haben geänderten
Zugriffspfad in V9 CM
• Neue I/O-Kosten Berechnungsformel für Indexes
ausgeblendet
•
•
•
•
V9: DATAREPEATFACTORF
setze Zparm STATCLUS=STANDARD
wiederhole Runstats+Rebind
14.7% aller Queries mit geändertem Zugriffspfad
DB2
SYSUSERDAY 2009
6
V8  V9 CM Migration
• Wieviele verschiedene Zugriffspfade
existieren für die 22793 Queries?
• V8: 4535 Zugriffspfade • V9: 4546 Zugriffspfade
3581 Zugriffspfade in V8 und V9 benutzt
954 Zugriffspfade in V9 nicht mehr benutzt
965 neue Zugriffspfade in V9 CM
• Siehe Notizenseiten für Detail Queries
• Notwendigkeit für Fallback Möglichkeit!
DB2
SYSUSERDAY 2009
7
V8  V9 CM Migration
• Zugriffspfad Fallback Vorbereitung (1/2)
• Plan Management (Zparm/Bind PLANMGMT)
• BASIC
Rebind
active copy
previous copy
• EXTENDED
previous copy
Rebind
active copy
original copy
nur falls es noch keine original copy gibt
DB2
SYSUSERDAY 2009
8
V8  V9 CM Migration
• Fallback auf Package Copy
• SWITCH (PREVIOUS)
Rebind
active copy
• SWITCH (ORIGINAL)
Rebind
previous copy
previous copy
active copy
original copy
DB2
SYSUSERDAY 2009
9
V8  V9 CM Migration
• Zugriffspfad Fallback Vorbereitung(2/2)
• Optimizer Hints
• kann nützlich sein nach neuem BIND
• aufgepasst auf neue Queryno
• Notizenseite enthält Check-Query zur Identifikation
von “verlorenen” Optimizer Hints nach Bind oder
Rebind von Packages:
t1
t2
Package p ohne
mit Opthint Opthint
DB2
SYSUSERDAY 2009
t3
Package p
ohne
Opthint
t4
mit
opthint
Zeit
10
V8  V9 CM Migration
• Für welche Art Queries ändert der
Zugriffspfad? (1/3)?
• 1. Ansatz: Queries mit hohem vorausgesagtem
CPU-Verbrauch (gemessen @ V8)?
% Queries mit
geändertem
Zugriffspfad
70
50
30
10
1
Vorausgesagter
CPU Verbrauch
in msec
2-10 11-100 101-1K >1K
• Nützen diese Daten wirklich etwas?
DB2
SYSUSERDAY 2009
11
V8  V9 CM Migration
• Für welche Art Queries ändert der
Zugriffspfad (2/3)?
• 2.Ansatz: Queries mit kleinem Unterschied bei
den vorhergesagten Kosten zwischen Original
Vorhersage und Vorhersage, bei der der erste
selektierte Index nicht existieren würde?
• Gute Idee, aber schwierig zu berechnen!
• Besser wäre reduzierte Anzahl Query
Kandidaten
DB2
SYSUSERDAY 2009
12
V8  V9 CM Migration
• Für welche Art Queries ändert der
Zugriffspfad (3/3)?
• 3. Ansatz: Queries mit Unterschieden zwischen
CPU-Verbrauchsvorhersage und –messung
• Verbrauch höher als Vorhersage
• Verbrauch kleiner als Vorhersage
% Queries mit
geändertem
Zugriffspfad
DB2
SYSUSERDAY 2009
0.1
1
Verhältnis
10 vorhergesagte/gemessene
CPU
13
V8  V9 CM Migration
• EinExperiment : “Reduzierte” Statistiken
• SYSINDEXES.NLEVELS
• Gleicher Wert für alle Indexes einer Tabelle
• SYSINDEXES.CLUSTERRATIOF = 0.95
• SYSINDEXES.DATAREPEATFACTOR
• Zparm STATCLUS=STANDARD vor Runstats
• Zparm NPGTHRSH = -1
• NPGTHRSH = 100 ev. besserer Kompromiss
• Wiederhole V8V9 CM Migrations Szenario:
• Queries mit geändertem Zugriffspfad: 2089 (9.1%)
DB2
SYSUSERDAY 2009
14
Dynamic Queries
• Fokus auf Zugriffspfad statt auf Query
Text
• Plan, Package, Authid oft nicht nützlich zur
Identifikation/Gruppierung von Queries
• Viele gleiche oder ähnliche Queries
• Gruppiere Queries anhand von benutztem
Zugriffspfad
DB2
SYSUSERDAY 2009
15
Das M3 Framework
Nur für Zeilen mit
Global Dynamic
STAT_EXEC > 0
Statement Cache
-START
TRACE(MON)
CLASS(1)
IFCID(318)
Dt
EXPLAIN
STMTCACHE
ALL
DSN_STATEMENT_
CACHE_TABLE
EXPLAIN
STMTCACHE
STMTID x
PLAN_
TABLE
Zeit
DSN_STATEMNT_
TABLE
Für den Oracle DBA:
Für den Oracle DBA:
V$SQLAREA ist V$SQL_PLAN
dasselbe
ist dasselbe wie die
Zugriffs wie
Pfad Aggregation
(Performance
Daten gruppiert
die DSN_STATEMENT_CACHE_TABLE
PLAN_TABLE
nachnach Zugriffspfad)
EXPLAIN STMTCACHE STMTID x.
Zugriffspfad Gruppierung
bereits berechnet:
Summary Table
PLAN_HASH_VALUE Kolonne.
DB2
SYSUSERDAY 2009
16
Die M3 Summary Tabelle
Advanced Query Tuning
M3
V2.2
• Lerne deinen Workload kennen
Trace start
2007/9/24 10:11 am
Cache snapshot 2007/9/24 10:27 am
Dynamic SQL Performance Diagnosis for DB2P
• Beispiel 13.01.2009:
Emergency Tuning
ET01
ET02
Refresh
No of Stmt Groups with high CPU / Statement Ratio
% of Unreferenced Cached Statements
Overall
% Change
0
0%
0
56%
-5%
0.59
• 199277Performance
Queries
durchgeführt
Control: SQL Statement
No of Stmt Groups with Inefficient Predicates
No of Stmt Groups with Resource
Intensive Sorts
• 1009 verschiedene
Zugriffspfade
verwendet
No of Stmt Groups with Intensive Locking
Critical
Applications
% Change
0
0%
66%
0%
0.66
Overall
% Change
Crit. Appl.
% Change
PC01
0
0%
0
0
0%
PC02
0
0%
0
0
0%
0
-100%
1
0
-100%
0
0%
0
0
0%
Overall
% Change
44
-10%
49
23
-12%
26
0
0%
0
0
0%
0
Overall
% Change
Crit.Appl.
% Change
2264
11%
2091
4%
Overall
% Change
Crit. Appl.
% Change
PC03
Summary
Table
PC04
No of Stmt Groups with Optimizer Challenges
Performance Control: Memory Management
Dyn Statement Cache Min Residency Time (min)
Local Buffer Pools Min Residency Time (min)
No of Failed Writes to Group Buffer Pool
No of Sync I/Os caused by Cross-Invalidation (per min)
Performance Control: Data Management
Getpage requests / second
während 15-min Zeitintervall.
PC05
PC06
PC07
PC08
PC09
Performance Management
PM01
PM02
PM03
PM04
PM05
PM06
PM07
PM08
PM09
Tspce/Index Runstats Efficiency
Tspce/Index Reorg Efficiency
Optimization Potential
Unused Indexes
Total CPU Time per second
Total Sync I/O Time per second
Total Elapsed Time per second
CPU Seconds / Processed Row
Elapsed Seconds / Processed Row
DB2
SYSUSERDAY 2009
DynSQL Performance Index (100=31.08.2007)
DSPI
n/a
n/a
62%
20
0.08500
n/a
n/a
3%
11%
4%
1.59921
1.84253
0.00004
0.00096
0.234
206.19
2047
3
0.6
18
0.08183
n/a
n/a
57%
n/a
0.07147
n/a
n/a
2%
n/a
-7%
11%
1.44049
1.38093
8%
11%
-50%
-45%
1.6585
0.00008
0.00173
1.59572
0.00007
0.00166
7%
-13%
3%
92.59%
107.058
118.32
7.52%
17
0.234
M3 Ressourcen Verbrauch
Dt
EXPLAIN STMTCACHE ALL
(23894 Statements)
Fuel Consumption
EXPLAIN
City
13 mpg
STMTCACHE
Highway
19 mpg
STMTID
x (6306
mal
Tank capacity
durchgeführt) *)
approximate 16.6 gal
*) für
DB2
SYSUSERDAY 2009
alle Statements mit stat_exec > 0
18
Risiko Minimierung
• Analysiere Zugriffs Pfade
• Zugriffs Pfade mit
• CPU Vorhersage >> CPU Messung
vorhergesagte CPU (dsn_statemnt_table)
>2
gemessene CPU (dsn_statement_cache_table)
& Anzahl Ausführungen Zugriffspfad > 1 / sec
Klare Entscheidungs Hilfe für Optimizer:
1 Index mit 3 Spalten anstelle
3 Indexes mit je 1 Spalte
Bei der Schweiz. Mobiliar (Messung am 13.01.09), identifizierte
DB2dieses Query 44 verschiedene Zugriffspfade (4.3% aller dynamic
SQL Zugriffspfade),
welche genauer untersucht werden mussten.
SYSUSERDAY
2009
19
Risiko Minimierung
• Vermeide Zugriffs Pfad Konflikte
• Falls nicht schon beim DB Design zumindest durch
Statistiken
• Query Pre-Optimization
• Katalog Statistik Updates auf SYSINDEXES
• NLEVELS
• CLUSTERRATIOF / DATAREPEATFACTORF
• Query Re-Optimization
• REOPT(AUTO): Achtung bei OO-Applikationen
DB2
SYSUSERDAY 2009
20
Dyn SQL AccessPath Fallback
• Kein Fallback, Opt Hints kaum nutzbar
• Bereite Notfall Catalog Updates vor:
• Re-Update ab SYS[INDEXES¦TABLES]_HIST
• Direkte Updates von
COLCARDF/FIRSTKEYCARDF
NLEVELS / NLEAF
CARDF
• Update Kontrolle
• Runstats
• Dynamic Statement Cache leeren:
RUNSTATS … UPDATE NONE REPORT NO
DB2
SYSUSERDAY 2009
21
Dyn SQL AccessPath Fallback
Table
Column
Defaultwert
(o. Runstats)
vom Optimizer benutzt bei
SYSTABLES
CARDF
NPAGES
10000
Indexscan mit tiefer Clusterratio
1+ CARDF/20 Indexscan mit hoger Clusterratio
SYSTABLESPACE
NACTIVEF
1 + CARDF/20 tablespace scan
SYSCOLUMNS
COLCARDF
HIGH2KEY
LOW2KEY
25
-----
DB2
SYSUSERDAY 2009
FF für „=„ und Range Abfragen
FF für Range Abfragen
FF für Range Abfragen
22
Dyn SQL AccessPath Fallback
Table
Column
Defaultwert
(o. Runstats)
SYSINDEXES
FIRSTKEYCARDF
25
FULLKEYCARDF
25
NLEAF
CARDF/300
NLEVELS
0
CLUSTERRATIOF/
0
DATAREPEATFACTORF
SYSCOLDIST(STATS)
NAME / NUMCOLUMNS --COLVALUE
--FREQUENCYF
--DB2
SYSUSERDAY 2009
vom Optimizer benutzt bei
FF für matching Indexscan
FF für matching IndexScan
Schätzung Index I/O Aufwand
Schätzung Index I/O Aufwand
Schätzung Tspce I/O Aufwand
Daten nicht gleichverteilt
Daten nicht gleichverteilt
Daten nicht gleichverteilt
23
Dyn SQL AccessPath Fallback
COLCARDF Beispiel für Range Abfragen
COLCARDF
>= 100M
>=
10M
>=
1M
>= 100,000
>= 10,000
>= 1,000
>=
100
>=
2
=
1
<=
0
Filter-Factor
für </>[=]
1/10,000
1/3,000
1/1,000
1/300
1/100
1/30
1/10
1/3
1
1/3
DB2
SYSUSERDAY 2009
Filter-Factor
für LIKE/BETWEEN
3/100,000
1/10,000
3/10,000
1/1,000
3/1,000
1/100
3/100
1/10
1
1/10
24
Applikations Profile
• Die Idee
• Applikations-abhängige Optimierungs Regeln
• z.B: “Access Path Stability” Profil vs.
“Access Path Peak Performance” Profil
DB2
SYSUSERDAY 2009
25
DB2
SYSUSERDAY 2009
26
DB2
SYSUSERDAY 2009
27
Choose sport profile
DB2
SYSUSERDAY 2009
28
DB2
SYSUSERDAY 2009
29
DB2
SYSUSERDAY 2009
30
DB2
SYSUSERDAY 2009
31
DB2
SYSUSERDAY 2009
32
DB2
SYSUSERDAY 2009
33
DB2
SYSUSERDAY 2009
34
DB2
SYSUSERDAY 2009
35
Choose comfort profile
DB2
SYSUSERDAY 2009
36
DB2
SYSUSERDAY 2009
37
DB2
SYSUSERDAY 2009
38
DB2
SYSUSERDAY 2009
39
DB2
SYSUSERDAY 2009
40
DB2
SYSUSERDAY 2009
41
DB2
SYSUSERDAY 2009
42
DB2
SYSUSERDAY 2009
43
DB2
SYSUSERDAY 2009
44
Sport profile’s risk
DB2
SYSUSERDAY 2009
45
DB2
SYSUSERDAY 2009
46
DB2
SYSUSERDAY 2009
47
DB2
SYSUSERDAY 2009
48
DB2
SYSUSERDAY 2009
49
Comfort profile’s risk
DB2
SYSUSERDAY 2009
50
DB2
SYSUSERDAY 2009
51
Switch to your
favourite profile
DB2
SYSUSERDAY 2009
52
Applikations Profile
“If you compare the driver‟s intended direction (by
steering angle) to the vehicle‟s actual direction
•measuring
Die Idee
(by measuring vehicle rotation and individual road wheel
• Applikations-abhängige
Optimierungs
Regeln
speeds)
and detect when the vehicle
is not going
where
• z.B:
“Access Path
vs. control)
the driver
is steering,
DSCStability”
(dynamicProfil
stability
intervenes and
applies
thePeak
brakes
to individualProfil
wheels
“Access
Path
Performance”
asymmetrically.”
• Vergleiche mit Mobil Telefon Profil!
“If •you
compare the
estimated
access
Vergleiche
mitoptimizer‟s
Ein-/Ausschalten
von
ESC path
cost (elektronische
(by measuring dsn_statemnt_table.procsu)
to the
Stabilitätskontrolle) bei PKW
query‟s
actual
performanc
numbers
(heisst
Dynamic
Stability Control
bei BMW)
(dsn_statement_cache.stat_cpu) and detect when the
runtime numbers are different from what was predicted,
the DBA intervenes and applies corrections to the access
path or the statistics collected.”
DB2
SYSUSERDAY 2009
53
Applikations Profile
• Verschiedene Statistik-Pakete für
verschiedene Anwendungen
• Statische Queries
• Aggressive, genaue, aktuelle Statistiken
• Zparm NPGTHRSH = 0 (oder kleiner pos. Wert)
• Wiederherstellung vor Rebind
• Dynamische Queries
•
•
•
•
Balanciere NLEVELS
CLUSTERRATIOF = 0.95
DATAREPEATFACTORF = -1
Zparm NPGTHRSH = -1
DB2
SYSUSERDAY 2009
54
Applikations Profile
• Applikations Profile im
Tagesgeschäft
• Schalte um auf peak performance profile
(korrekte Statistiken) vor Rebind
• Update aus SYSINDEXES_HIST
• SET SYSPARM LOAD(name)
• Schalte um auf access path stability profile
• Nach Runstats
• Nach (Re)bind
• Nicht vergessen: Leere dyn. SQL Stmt Cache
DB2
SYSUSERDAY 2009
55
Applikations Profile
in DB2 V9.1
• IP-address abhängige ZPARMS
• NPAGES Threshold
• -1:Verwende Index wann immer möglich.
• 0:Selektiere Zugriffspfad kosten-basiert
• n:Verwende Index bei Tabellen mit < n pages,
berechne kosten-basiert für Tabellen > n.
• Ein-/Ausschalten Star Joins
• DISABLE: Star Join Verarbeitung augeschaltet
• ENABLE: Star Join Verarbeitung möglich
DB2
SYSUSERDAY 2009
56
Applikations Profile
in DB2 V9.1
• IP-address abhängige ZPARMS im
Tagesgeschäft
• Create a profile
• NPAGES=-1 für selektierte IP-Addressen
• NPAGES= 0 für alle übrigen
• Start Profile
• De-Aktiviere spezifisches Profil
• Stopp alle Profile
DB2
SYSUSERDAY 2009
57
Rückblick
• V8  V9 CM Migration
• Vorbereitung für Access Path Fallback!
• Risiko Minimierung
• Klare Entscheidungshilfen für Optimizer
• Dynamic Query Access Path Fallback
• Bereit sein für den Notfall
• Neuer Ansatz: Applikations Profile
DB2
SYSUSERDAY 2009
58
Methoden und Techniken zur Stabilisierung
von Datenbank Zugriffspfaden
Thomas Baumann
Swiss Mobiliar, Switzerland
[email protected]
DB2
SYSUSERDAY 2009
59
Herunterladen