43
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 1 Performance-Stabilisierung mit Einsatz von SQL Plan Baselines Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Embed Size (px)

DESCRIPTION

http://www.opitz-consulting.com/go/3-6-876 Der "Die Performance ist schlecht", meldet der Anwender. "Die Tests waren gut", meldet der Entwickler. Der Datenbankadministrator hat die Ursache schnell gefunden - die Ausführungspläne schwanken stark. Aber: welcher Ausführungsplan ist der richtige? Und: Wie sah das Ganze in der Testumgebung aus? So kommt eins zum anderen. Im Vortrag wird auf folgende Punkte konkret eingegangen: • Durchführung von Tests und Aufbewahrung von Testergebnissen • Einsatz von Baselines zur Stabilisierung wechselnder Ausführungspläne • Identifizierung von Problemstatements • Messung Stabilisierungs– und Tuningerfolg Katja Werner arbeitet als Senior Consultant bei unserer IT-Beratung und hielt diesen Fachvortrag bei der DOAG Konferenz und Ausstellung am 19.11.2013 in Nürnberg. -- Über uns: Als führender Projektspezialist für ganzheitliche IT-Lösungen tragen wir zur Wertsteigerung der Organisationen unserer Kunden bei und bringen IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich unsere Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen. Über unsere IT-Beratung: http://www.opitz-consulting.com/go/3-8-10 Unser Leistungsangebot: http://www.opitz-consulting.com/go/3-8-874 Karriere bei OPITZ CONSULTING: http://www.opitz-consulting.com/go/3-8-5

Citation preview

Page 1: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 1Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Page 2: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 2Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

<Bild oder OC-Tätigkeitsfeld-Logo>

Katja WernerSenior Consultant

OPITZ CONSULTING GmbH

mit Einsatz von SQL Plan Baselines

Nürnberg, 19.11.2013

Performance-Stabilisierung

Page 3: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING GmbH 2012 Seite 3<Präsentationstitel – bitte im Folienmaster ändern>

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

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

LeistungsangebotBusiness IT AlignmentBusiness Information ManagementBusiness Process ManagementAnwendungsentwicklungSOA und System-Integration IT-Infrastruktur-Management

MärkteBranchenübergreifendÜber 600 Kunden

29%Industrie / Versorger /

Telekommunikation

29%Handel / Logistik / Dienstleistungen

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

EckdatenGründung 1990 400 Mitarbeiter9 Standorte

Page 4: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 4Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Agenda

Page 5: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 5Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

1 Der Anfang

Page 6: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 6Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Herausforderung

Als Datenbankadministrator beim Kunden

"Die Performance ist schlecht"

Page 7: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 7Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Ist die Performance

immer schlecht?

Nein. Letzte Woche war gut.

Ursachenforschung

... Ist mal besser. Und mal

schlechter.

Page 8: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 8Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

2 Etwas Theorie

Page 9: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 9Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Wie entsteht der Explain Plan?

Query Transformer

Estimator Plan Generator

Bester Explain Plan

Page 10: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 10Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Was denken Sie?

A) Oracle kanns nicht besser.

B) Cost based Optimierung hat noch nie funktioniert.

C) Richtige Antwort.

Warum sind die Explain Plans so schlecht?

Page 11: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 11Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Warum sind die Explain Plans so „schlecht“?

Bindevariablen in Verbindung mit unterschiedlich großen Datenmengen

Funktionen/Prozeduren im Code

Viele Joinmöglichkeiten

Veraltete Statistiken

Ungünstige Einstellungen

C) Richtige Antwort(en):

Page 12: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 12Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Hint Stored Outline

SQL Profile

SQL Plan Baseline

Möglichkeiten zur Stabilisierung

Page 13: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 13Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

3 Der Weg zu stabiler Performance

Page 14: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 14Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Fragen

Wieviel Statements sind betroffen?

Was für Statements sind betroffen?

Was will ich wie stabilisieren?

Page 15: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 15Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Der Weg zu stabiler Performance

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

Priorisieren, Stabilisierungsmaßnahme(n) festlegen

Datensammlung (DBA_HIST_SQLSTAT)

Page 16: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 16Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Anzahl unterschiedlicher Explain Plans

700

40 15 Für alle Statements auf der DB

1 2>2

Page 17: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 17Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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;

Page 18: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 18Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Für alle Statements auf der DB

1 2>2

Bindevariablen-Statements (ca. 550)

Unterschiedliche Explain Plans pro Statement“art“

Literalstatements (ca. 100)

Einfache Statements

(ca. 100)

Page 19: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 19Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 20: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 20Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

4 SQL Plan Baselines in der Praxis

Page 21: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 21Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Das ist eine SQL Plan Baseline

ALL_ROWSDB_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"))……

Page 22: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 23Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Voraussetzungen

Enterprise Edition

Bei Nutzung von SQL Tuning Sets: Tuning + Diagnostic Pack

OPTIMIZER_USE_SQL_PLAN_BASELINES=TRUE

Ab Oracle 11g

Page 23: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 24Performance-Stabilisierung mit Einsatz von SQL Plan 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

Rechte für Baselines

Page 24: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 25Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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)

Page 25: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 26Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 26: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 27Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

SQL Plan History

Wie entsteht der Explain Plan mit Baselines?

Query Transformer

Estimator Plan Generator

Bester Explain Plan

SQL Plan Baseline

Page 27: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 28Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Wie entsteht der Explain Plan mit Baselines?

Vorhandene SQL Plan Baseline:

Vorhandene SQL Plan Baseline und vom Optimizer entwickelter Alternativplan:

Page 28: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 29Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Wird meine Baseline genutzt?

V$SQL.SQL_PLAN_BASELINE für aktuell laufende Statements

DBA_SQL_PLAN_BASELINES.LAST_EXECUTED (nicht immer zuverlässig)

Page 29: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 30Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 30: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 31Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

5 Und noch etwas Praxis - Testcases

Page 31: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 32Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Ist die Performance

immer schlecht?

Nein. Letzte Woche war gut.

Ursachenforschung

Ja. Performance war wunderbar.

Wo sind die Testergebnisse?

Konkrete Daten, Laufzeiten, Explain Plans,

…?

Häh?

... Ist mal besser. Und mal

schlechter.

Ne. Das haben wir nicht mehr.

Wurde der Prozess

getestet?

Page 32: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 33Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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?

Page 33: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 34Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 34: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 35Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 35: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 36Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 36: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 37Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 37: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 38Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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

Page 38: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 39Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

6 Am Ziel

Page 39: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 40Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Die Kür – SQL Plan Baselines + Testcases

1. Statement-auswahl 2. Testcase

3. Baseline/ Tunen

4. Kontrolle

Test/EntwicklungProduktion

2. Testcase

3. Baseline/ Tunen

Abnahme

Page 40: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 41Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

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!

Page 41: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 42Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Nein. Ist super. Immer! Stabil!

Ist die Performance immer noch schlecht?

Am Ziel!

Testcases haben wir auch

… zum Vergleich bei:- Problemen- Upgrades- Codeänderungen

Page 42: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 43Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Fragen und Antworten

Page 43: Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

© OPITZ CONSULTING Deutschland GmbH 2013 Seite 44Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

Kontakt

Katja WernerSenior Consultant

OPITZ CONSULTING Deutschland GmbHStandort MünchenWeltenburger Straße 4 | 81677 MünchenTel. +49 (89) 68 00 [email protected]

youtube.com/opitzconsulting

@OC_WIRE

slideshare.net/opitzconsulting

xing.com/net/opitzconsulting