Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
-
Upload
opitz-consulting -
Category
Documents
-
view
699 -
download
0
description
Transcript of 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
© 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
© 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
© 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
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 5Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
1 Der Anfang
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 6Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
Herausforderung
Als Datenbankadministrator beim Kunden
"Die Performance ist schlecht"
© 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.
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 8Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
2 Etwas Theorie
© 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
© 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?
© 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):
© 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
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 13Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
3 Der Weg zu stabiler Performance
© 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?
© 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)
© 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
© 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;
© 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)
© 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
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 20Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
4 SQL Plan Baselines in der Praxis
© 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"))……
© 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
© 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
© 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)
© 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
© 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
© 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:
© 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)
© 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
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 31Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
5 Und noch etwas Praxis - Testcases
© 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?
© 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?
© 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
© 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
© 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
© 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
© 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
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 39Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
6 Am Ziel
© 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
© 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!
© 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
© OPITZ CONSULTING Deutschland GmbH 2013 Seite 43Performance-Stabilisierung mit Einsatz von SQL Plan Baselines
Fragen und Antworten
© 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