• Like

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines

  • 562 views
Uploaded on

http://www.opitz-consulting.com/go/3-6-876 …

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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
562
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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