SlideShare a Scribd company logo
1 of 43
Performance-Stabilisierung mit Einsatz
von SQL Plan Baselines

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 1
Performance-Stabilisierung
mit Einsatz von SQL Plan Baselines

Katja Werner
Senior Consultant
OPITZ CONSULTING GmbH

Nürnberg, 19.11.2013
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 2
Mission

Märkte

Wir entwickeln gemeinsam mit allen
Branchen Lösungen, die dazu führen, dass
sich diese Organisationen besser entwickeln
als ihr Wettbewerb.

 Branchenübergreifend
 Über 600 Kunden

Unsere Dienstleistung erfolgt
partnerschaftlich und ist auf eine langjährige
Zusammenarbeit angelegt.

29%
Handel / Logistik /
Dienstleistungen

29%
Industrie / Versorger /
Telekommunikation

42%
Öffentliche Auftraggeber / Banken und
Versicherungen / Vereine und Verbände

Leistungsangebot

Eckdaten

 Business IT Alignment
 Business Information Management
 Business Process Management
 Anwendungsentwicklung
 SOA und System-Integration
 IT-Infrastruktur-Management

 Gründung 1990
 400 Mitarbeiter
 9 Standorte

<Präsentationstitel – bitte im Folienmaster ändern>

© OPITZ CONSULTING GmbH 2012

Seite 3
Agenda
1. Der Anfang

2. Etwas Theorie
3. Der Weg zu stabiler Performance
4. SQL Plan Baselines in der Praxis
5. Und noch etwas Praxis – Testcases
6. Am Ziel

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 4
1

Der Anfang

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 5
Herausforderung

 Als Datenbankadministrator beim Kunden
 "Die Performance ist schlecht"

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 6
Ursachenforschung

Ist die
Performance
immer
schlecht?

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Nein. Letzte
Woche war gut.
…
... Ist mal
besser. Und mal
schlechter.

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 7
2

Etwas Theorie

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 8
Wie entsteht der Explain Plan?

Query
Transformer

Estimator

Plan
Generator

Bester Explain Plan

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 9
Was denken Sie?
Warum sind die Explain Plans so schlecht?

A) Oracle kanns nicht besser.

B) Cost based Optimierung hat noch nie
funktioniert.
C) Richtige Antwort.

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 10
Warum sind die Explain Plans so „schlecht“?
C) Richtige Antwort(en):
 Bindevariablen in Verbindung mit unterschiedlich
großen Datenmengen
 Funktionen/Prozeduren im Code
 Viele Joinmöglichkeiten
 Veraltete Statistiken
 Ungünstige Einstellungen

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 11
Möglichkeiten zur Stabilisierung

Hint

Stored
Outline

SQL
Profile

SQL Plan
Baseline

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 12
3

Der Weg zu
stabiler Performance

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 13
Fragen

 Wieviel Statements sind betroffen?
 Was für Statements sind betroffen?
 Was will ich wie stabilisieren?

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 14
Der Weg zu stabiler Performance
Datensammlung (DBA_HIST_SQLSTAT)

Analyse (wechselnde Explain Plans, lang laufende
SQL-Statements/Geschäftsprozesse)

Priorisieren, Stabilisierungsmaßnahme(n) festlegen
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 15
Anzahl unterschiedlicher Explain Plans
Für alle Statements
auf der DB

40 15

1
2
>2
700

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 16
Klassifizierung von SQL Statements
 „Normales“ Statement:
select * from employee where id=99;
 Literalstatements:
select * from employee where name=‘SCOTT‘;
select * from employee where name=‘MUELLER‘;
select * from employee where name=‘HUGO‘;
 Statements mit Bindevariablen:
select * from employee where name=:var1;
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 17
Unterschiedliche Explain Plans pro
Statement“art“
Literalstatements
(ca. 100)

Einfache
Statements
(ca. 100)

1
2
>2

BindevariablenStatements (ca. 550)
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 18
Fazit für vorliegende Datenbank
 Kaum Statements mit Literalen
 Viele Statements mit Bindevariablen
 Insgesamt ca. 50 Statements, die stabilisiert werden
könnten

 SQL Plan Baselines sollen eingesetzt werden
 Große und kleine Datenmengen testen

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 19
4

SQL Plan Baselines
in der Praxis

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 20
Das ist eine SQL Plan Baseline
ALL_ROWS
DB_VERSION('11.2.0.3')
OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
USE_NL(@"SEL$F5BB74E1" "C"@"SEL$2")
USE_NL(@"SEL$F5BB74E1" "A"@"SEL$2")
LEADING(@"SEL$F5BB74E1" "B"@"SEL$2"
"A"@"SEL$2" "C"@"SEL$2")
INDEX(@"SEL$F5BB74E1" "C"@"SEL$2"
("PROMOTIONS"."PROMO_ID"))
INDEX(@"SEL$F5BB74E1" "A"@"SEL$2"
("PRODUCTS"."PROD_ID"))
……
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 21
Voraussetzungen
 Enterprise Edition
 Bei Nutzung von SQL Tuning Sets: Tuning + Diagnostic
Pack
 OPTIMIZER_USE_SQL_PLAN_BASELINES=TRUE
 Ab Oracle 11g

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 23
Rechte für Baselines
 ADMINISTER SQL MANAGEMENT OBJECT
Zum vernünftig arbeiten können:

 SELECT ANY DICTIONARY
 CREATE TABLE + Quota
 CREATE, ALTER SESSION

 Evtl. Rechte auf Applikationsschemata
 Evtl. ADVISOR
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 24
Wo bekomme ich SQL Plan Baselines her?
Automatisches Laden, wenn:
 OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=TRUE

Manuelles Laden aus:
 SQL Tuning Set
 Cursor Cache
 Stored Outline
 Import aus anderen Datenbanken
 AWR (nur über SQL Tuning Set)
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 25
Export und Import von Baselines
 Erstellen einer Stagingtabelle:
DBMS_SPM.CREATE_STGTAB_BASELINE
 Befüllen der Stagingtabelle:
DBMS_SPM.PACK_STGTAB_BASELINE
 Export/Import und dann wieder entpacken:
DBMS_SPM.UNPACK_STGTAB_BASELINE

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 26
Wie entsteht der Explain Plan mit Baselines?

Query
Transformer

Estimator

SQL Plan
Baseline

Plan
Generator

Bester Explain
Plan

SQL Plan History
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 27
Wie entsteht der Explain Plan mit Baselines?
 Vorhandene SQL Plan Baseline:

 Vorhandene SQL Plan Baseline und vom Optimizer
entwickelter Alternativplan:

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 28
Wird meine Baseline genutzt?

 V$SQL.SQL_PLAN_BASELINE für aktuell laufende
Statements
 DBA_SQL_PLAN_BASELINES.LAST_EXECUTED (nicht
immer zuverlässig)

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 29
Lessons Learned
 Baseline wirkt für gesamte Datenbank
 dbms_xplan.display_sql_plan_baseline
 Laden per Tracefile – SQL Tuning Set nicht möglich

 Für Join von Tabelle mit Collection CAST-Operator
nutzen
 Retentiontime
 Automatisch gesammelte Baselines erst beim 2.
Ausführen
 DBA_SQL_PLAN_BASELINES.LAST_EXECUTED
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 30
5

Und noch etwas
Praxis - Testcases

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 31
Ursachenforschung

Ist die Wo sind die
Wurde Testergebnisse?
der
Performance
Prozess
immer
Konkrete
getestet?
schlecht?
Daten, Laufzei
ten, Explain
Plans,
…?

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Nein. Letzte
Woche war gut.
Häh?
…
Ja. Performance
war wunderbar.
... Ist mal
Ne. Das haben wir
besser. Und mal
nicht mehr.
schlechter.

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 32
Ziel von Testcases

 Nachvollziehbarkeit: Was wurde getestet und wie
waren die Ergebnisse?
-> Vergleich zwischen Gestern und Heute
 Wiederholbarkeit: Wie sind die Ergebnisse, wenn ich
den Test erneut durchführe?

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 33
Was gehört zu einem Testcase?

Dokumentation:
 Welcher konkrete Geschäftsprozess?
(Beispiel: Rechnungserstellung für Telefonnummer
0172-2048790 für die Monate 01-03/2013)

 Start- und Endezeitpunkt des Prozesses
 SQL Tuning Set für alle SQLs
 AWR-Report für genau diesen Zeitraum
Skripts
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 34
Umsetzung der Testcases
 Erstellung zusammen mit Fachbereich für konkret (!!!)
definierte Geschäftsprozesse
 Immer dieselben Datenmengen pro Testcase
 Für viel und wenig Daten
 Messung gesamter Prozesse, nicht einzelner SQL
Statements
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 35
Best Practice
 Modulnamen verwenden
 Shared Pool und Buffer Cache leeren
 SQL Tuning Sets
 AWR-Snapshots vor und nach Testlauf
 Große sowie kleine Datenmengen
 Testdatenmenge möglichst langlebig wählen
 Tuningmaßnahmen im Releaseplan einplanen

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 36
Woran festmachen, ob die Performance besser
ist?
Testumgebung:
 Testcases ablaufen lassen
 Laufzeiten messen
 Vergleichen und evtl. Unschärfen auswerten
Produktion
 Vergleiche der Prozesslaufzeiten mit Testcases

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 37
Unschärfen
 Ressourcen, die nicht nur von Testdatenbank allein
genutzt werden (Storage, Netzwerk, CPU)
Bei Vergleich zwischen Test und Produktion:
 Prozesse laufen in Produktion nicht isoliert
 Unterschiedliche abgefragte Datenmengen
 Unterschiedliche Hardware
AWR-Reports, SQL Tuning Sets und Laufzeiten helfen bei
der Beurteilung
Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 38
6

Am Ziel

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 39
Die Kür – SQL Plan Baselines + Testcases
Produktion

Test/Entwicklung

1. Statementauswahl

2. Testcase

4. Kontrolle

Abnahme

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

3. Baseline/
Tunen

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 40
Erkenntnisse fürs weitere DBA-Leben

1. Tune nicht nur. Stabilisiere!
2. Klassifiziere deine Statements nach Art und Anzahl
und du kennst die Datenbank!
3. Priorisiere!
4. Nutze Testcases für Vergleiche und Wiederholbarkeit!

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 41
Am Ziel!

Ist die
Performance
immer noch
schlecht?

Nein. Ist super.
Immer! Stabil!
Testcases
haben wir auch
…
… zum Vergleich bei:
- Problemen
- Upgrades
- Codeänderungen

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 42
Fragen und Antworten

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 43
Kontakt
Katja Werner
Senior Consultant

OPITZ CONSULTING Deutschland GmbH
Standort München
Weltenburger Straße 4 | 81677 München
Tel. +49 (89) 68 00 98-1466
katja.werner@opitz-consulting.com

youtube.com/opitzconsulting
@OC_WIRE
slideshare.net/opitzconsulting
xing.com/net/opitzconsulting

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013

Seite 44

More Related Content

More from OPITZ CONSULTING Deutschland

Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"OPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OPITZ CONSULTING Deutschland
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OPITZ CONSULTING Deutschland
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungOPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOPITZ CONSULTING Deutschland
 

More from OPITZ CONSULTING Deutschland (20)

Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
 
OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"
 
OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"
 
10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
 
OC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-LizenzierungOC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-Lizenzierung
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
 
OC|Weekly Talk The Power of DevOps…
OC|Weekly Talk  The Power of DevOps…OC|Weekly Talk  The Power of DevOps…
OC|Weekly Talk The Power of DevOps…
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring
 
OC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remoteOC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remote
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud Nutzung
 
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
 
OC|Weekly Talk Remote Design Thinking
OC|Weekly Talk Remote Design ThinkingOC|Weekly Talk Remote Design Thinking
OC|Weekly Talk Remote Design Thinking
 
OC|Webcast Smart Innovation am 7. April 2020
OC|Webcast Smart Innovation am 7. April 2020OC|Webcast Smart Innovation am 7. April 2020
OC|Webcast Smart Innovation am 7. April 2020
 
2020 oracle lizenznews
2020 oracle lizenznews2020 oracle lizenznews
2020 oracle lizenznews
 

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

  • 1. Performance-Stabilisierung mit Einsatz von SQL Plan Baselines Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 1
  • 2. Performance-Stabilisierung mit Einsatz von SQL Plan Baselines Katja Werner Senior Consultant OPITZ CONSULTING GmbH Nürnberg, 19.11.2013 Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 2
  • 3. Mission Märkte Wir entwickeln gemeinsam mit allen Branchen Lösungen, die dazu führen, dass sich diese Organisationen besser entwickeln als ihr Wettbewerb.  Branchenübergreifend  Über 600 Kunden Unsere Dienstleistung erfolgt partnerschaftlich und ist auf eine langjährige Zusammenarbeit angelegt. 29% Handel / Logistik / Dienstleistungen 29% Industrie / Versorger / Telekommunikation 42% Öffentliche Auftraggeber / Banken und Versicherungen / Vereine und Verbände Leistungsangebot Eckdaten  Business IT Alignment  Business Information Management  Business Process Management  Anwendungsentwicklung  SOA und System-Integration  IT-Infrastruktur-Management  Gründung 1990  400 Mitarbeiter  9 Standorte <Präsentationstitel – bitte im Folienmaster ändern> © OPITZ CONSULTING GmbH 2012 Seite 3
  • 4. Agenda 1. Der Anfang 2. Etwas Theorie 3. Der Weg zu stabiler Performance 4. SQL Plan Baselines in der Praxis 5. Und noch etwas Praxis – Testcases 6. Am Ziel Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 4
  • 5. 1 Der Anfang Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 5
  • 6. Herausforderung  Als Datenbankadministrator beim Kunden  "Die Performance ist schlecht" Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 6
  • 7. Ursachenforschung Ist die Performance immer schlecht? Performance-Stabilisierung mit Einsatz von SQL Plan Baselines Nein. Letzte Woche war gut. … ... Ist mal besser. Und mal schlechter. © OPITZ CONSULTING Deutschland GmbH 2013 Seite 7
  • 8. 2 Etwas Theorie Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 8
  • 9. Wie entsteht der Explain Plan? Query Transformer Estimator Plan Generator Bester Explain Plan Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 9
  • 10. Was denken Sie? Warum sind die Explain Plans so schlecht? A) Oracle kanns nicht besser. B) Cost based Optimierung hat noch nie funktioniert. C) Richtige Antwort. Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 10
  • 11. Warum sind die Explain Plans so „schlecht“? C) Richtige Antwort(en):  Bindevariablen in Verbindung mit unterschiedlich großen Datenmengen  Funktionen/Prozeduren im Code  Viele Joinmöglichkeiten  Veraltete Statistiken  Ungünstige Einstellungen Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 11
  • 12. Möglichkeiten zur Stabilisierung Hint Stored Outline SQL Profile SQL Plan Baseline Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 12
  • 13. 3 Der Weg zu stabiler Performance Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 13
  • 14. Fragen  Wieviel Statements sind betroffen?  Was für Statements sind betroffen?  Was will ich wie stabilisieren? Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 14
  • 15. Der Weg zu stabiler Performance Datensammlung (DBA_HIST_SQLSTAT) Analyse (wechselnde Explain Plans, lang laufende SQL-Statements/Geschäftsprozesse) Priorisieren, Stabilisierungsmaßnahme(n) festlegen Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 15
  • 16. Anzahl unterschiedlicher Explain Plans Für alle Statements auf der DB 40 15 1 2 >2 700 Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 16
  • 17. Klassifizierung von SQL Statements  „Normales“ Statement: select * from employee where id=99;  Literalstatements: select * from employee where name=‘SCOTT‘; select * from employee where name=‘MUELLER‘; select * from employee where name=‘HUGO‘;  Statements mit Bindevariablen: select * from employee where name=:var1; Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 17
  • 18. Unterschiedliche Explain Plans pro Statement“art“ Literalstatements (ca. 100) Einfache Statements (ca. 100) 1 2 >2 BindevariablenStatements (ca. 550) Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 18
  • 19. Fazit für vorliegende Datenbank  Kaum Statements mit Literalen  Viele Statements mit Bindevariablen  Insgesamt ca. 50 Statements, die stabilisiert werden könnten  SQL Plan Baselines sollen eingesetzt werden  Große und kleine Datenmengen testen Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 19
  • 20. 4 SQL Plan Baselines in der Praxis Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 20
  • 21. Das ist eine SQL Plan Baseline ALL_ROWS DB_VERSION('11.2.0.3') OPTIMIZER_FEATURES_ENABLE('11.2.0.3') USE_NL(@"SEL$F5BB74E1" "C"@"SEL$2") USE_NL(@"SEL$F5BB74E1" "A"@"SEL$2") LEADING(@"SEL$F5BB74E1" "B"@"SEL$2" "A"@"SEL$2" "C"@"SEL$2") INDEX(@"SEL$F5BB74E1" "C"@"SEL$2" ("PROMOTIONS"."PROMO_ID")) INDEX(@"SEL$F5BB74E1" "A"@"SEL$2" ("PRODUCTS"."PROD_ID")) …… Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 21
  • 22. Voraussetzungen  Enterprise Edition  Bei Nutzung von SQL Tuning Sets: Tuning + Diagnostic Pack  OPTIMIZER_USE_SQL_PLAN_BASELINES=TRUE  Ab Oracle 11g Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 23
  • 23. Rechte für Baselines  ADMINISTER SQL MANAGEMENT OBJECT Zum vernünftig arbeiten können:  SELECT ANY DICTIONARY  CREATE TABLE + Quota  CREATE, ALTER SESSION  Evtl. Rechte auf Applikationsschemata  Evtl. ADVISOR Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 24
  • 24. Wo bekomme ich SQL Plan Baselines her? Automatisches Laden, wenn:  OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=TRUE Manuelles Laden aus:  SQL Tuning Set  Cursor Cache  Stored Outline  Import aus anderen Datenbanken  AWR (nur über SQL Tuning Set) Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 25
  • 25. Export und Import von Baselines  Erstellen einer Stagingtabelle: DBMS_SPM.CREATE_STGTAB_BASELINE  Befüllen der Stagingtabelle: DBMS_SPM.PACK_STGTAB_BASELINE  Export/Import und dann wieder entpacken: DBMS_SPM.UNPACK_STGTAB_BASELINE Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 26
  • 26. Wie entsteht der Explain Plan mit Baselines? Query Transformer Estimator SQL Plan Baseline Plan Generator Bester Explain Plan SQL Plan History Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 27
  • 27. Wie entsteht der Explain Plan mit Baselines?  Vorhandene SQL Plan Baseline:  Vorhandene SQL Plan Baseline und vom Optimizer entwickelter Alternativplan: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 28
  • 28. Wird meine Baseline genutzt?  V$SQL.SQL_PLAN_BASELINE für aktuell laufende Statements  DBA_SQL_PLAN_BASELINES.LAST_EXECUTED (nicht immer zuverlässig) Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 29
  • 29. Lessons Learned  Baseline wirkt für gesamte Datenbank  dbms_xplan.display_sql_plan_baseline  Laden per Tracefile – SQL Tuning Set nicht möglich  Für Join von Tabelle mit Collection CAST-Operator nutzen  Retentiontime  Automatisch gesammelte Baselines erst beim 2. Ausführen  DBA_SQL_PLAN_BASELINES.LAST_EXECUTED Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 30
  • 30. 5 Und noch etwas Praxis - Testcases Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 31
  • 31. Ursachenforschung Ist die Wo sind die Wurde Testergebnisse? der Performance Prozess immer Konkrete getestet? schlecht? Daten, Laufzei ten, Explain Plans, …? Performance-Stabilisierung mit Einsatz von SQL Plan Baselines Nein. Letzte Woche war gut. Häh? … Ja. Performance war wunderbar. ... Ist mal Ne. Das haben wir besser. Und mal nicht mehr. schlechter. © OPITZ CONSULTING Deutschland GmbH 2013 Seite 32
  • 32. Ziel von Testcases  Nachvollziehbarkeit: Was wurde getestet und wie waren die Ergebnisse? -> Vergleich zwischen Gestern und Heute  Wiederholbarkeit: Wie sind die Ergebnisse, wenn ich den Test erneut durchführe? Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 33
  • 33. Was gehört zu einem Testcase? Dokumentation:  Welcher konkrete Geschäftsprozess? (Beispiel: Rechnungserstellung für Telefonnummer 0172-2048790 für die Monate 01-03/2013)  Start- und Endezeitpunkt des Prozesses  SQL Tuning Set für alle SQLs  AWR-Report für genau diesen Zeitraum Skripts Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 34
  • 34. Umsetzung der Testcases  Erstellung zusammen mit Fachbereich für konkret (!!!) definierte Geschäftsprozesse  Immer dieselben Datenmengen pro Testcase  Für viel und wenig Daten  Messung gesamter Prozesse, nicht einzelner SQL Statements Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 35
  • 35. Best Practice  Modulnamen verwenden  Shared Pool und Buffer Cache leeren  SQL Tuning Sets  AWR-Snapshots vor und nach Testlauf  Große sowie kleine Datenmengen  Testdatenmenge möglichst langlebig wählen  Tuningmaßnahmen im Releaseplan einplanen Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 36
  • 36. Woran festmachen, ob die Performance besser ist? Testumgebung:  Testcases ablaufen lassen  Laufzeiten messen  Vergleichen und evtl. Unschärfen auswerten Produktion  Vergleiche der Prozesslaufzeiten mit Testcases Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 37
  • 37. Unschärfen  Ressourcen, die nicht nur von Testdatenbank allein genutzt werden (Storage, Netzwerk, CPU) Bei Vergleich zwischen Test und Produktion:  Prozesse laufen in Produktion nicht isoliert  Unterschiedliche abgefragte Datenmengen  Unterschiedliche Hardware AWR-Reports, SQL Tuning Sets und Laufzeiten helfen bei der Beurteilung Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 38
  • 38. 6 Am Ziel Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 39
  • 39. Die Kür – SQL Plan Baselines + Testcases Produktion Test/Entwicklung 1. Statementauswahl 2. Testcase 4. Kontrolle Abnahme Performance-Stabilisierung mit Einsatz von SQL Plan Baselines 3. Baseline/ Tunen © OPITZ CONSULTING Deutschland GmbH 2013 Seite 40
  • 40. Erkenntnisse fürs weitere DBA-Leben 1. Tune nicht nur. Stabilisiere! 2. Klassifiziere deine Statements nach Art und Anzahl und du kennst die Datenbank! 3. Priorisiere! 4. Nutze Testcases für Vergleiche und Wiederholbarkeit! Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 41
  • 41. Am Ziel! Ist die Performance immer noch schlecht? Nein. Ist super. Immer! Stabil! Testcases haben wir auch … … zum Vergleich bei: - Problemen - Upgrades - Codeänderungen Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 42
  • 42. Fragen und Antworten Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 43
  • 43. Kontakt Katja Werner Senior Consultant OPITZ CONSULTING Deutschland GmbH Standort München Weltenburger Straße 4 | 81677 München Tel. +49 (89) 68 00 98-1466 katja.werner@opitz-consulting.com youtube.com/opitzconsulting @OC_WIRE slideshare.net/opitzconsulting xing.com/net/opitzconsulting Performance-Stabilisierung mit Einsatz von SQL Plan Baselines © OPITZ CONSULTING Deutschland GmbH 2013 Seite 44