Real Application Testing - Teil 5 von 7: Statistik Refresh

von Torsten Zimmermann (Kommentare: 0)

software-testing

Beispiel 3: Statistik Refresh

Aufgabe

Ein großer Web-Shop kann nicht mehr seine Tabellenstatistiken aktualisieren seitdem aufgrund weniger SQL Aufrufe das Erneuern der Statistiken zu einigen SQL Regressions und geringerer System Performance führte. Das System läuft also seit langem mit veralteten Statistiken. So reduzierte sich die Systemleitung während der letzten Monate. Nun müssen neue Statistiken erzeugt werden, um die Performance zu erhalten. Bei dieser Maßnahme könnten aber neue Performance Probleme auftreten.

Ansatz

Seit der Oracle Datenbankversion 11g R1 können Statistiken im sogenannten Pending Mode gesammelt werden. Dies bedeutet, dass neue Statistiken erzeugt werden, aber die entsprechenden Informationen werden nicht im Optimizer verwendet, sie werden nicht veröffentlicht.

Der SQL Performance Analyzer (SPA) kann Statistiken im Pending Mode verwenden, um die Leistung des Datenbanksystems zu überprüfen. Der Enterprise Manager 12 c enthält eine Benutzeroberfläche zur Steuerung des SQL Performance Analyzers. Hierüber lassen sich neue Statistiken einfach überprüfen. Da SPA nicht die Datenbankinhalte verändert, besteht keine Gefahr, dass bei der Überprüfung der Produktionsumgebung deren Leistung reduziert wird. Die folgenden Schritte müssen durchgeführt werden:

  • Das SQL Tuning Set (STS) aus der Produktion wird aufgezeichnet. Hierbei wird empfohlen, mehrere STS aus verschiedenen Geschäftszeiten aufzuzeichnen wie z.B. normale Bürozeiten, Nachtbetrieb und Monatsende, welche unterschiedliche Lastsituationen repräsentieren.
  • Die neuen Statistiken werden im Pending Mode aufgezeichnet.
  • Nun wird der SPA Workflow „Optimizer Statistics“ in der Produktionsumgebung ausgeführt.
  • Mithilfe des SPA Reports werden die SQL Regressionen identifiziert.
  • Die betreffenden SQL Anweisungen werden nun optimiert. Hierbei bietet der Tuning Advisor zusätzliche Einblicke bezüglich SQL Profile, neuer Indizes oder neu angelegter Statistiken. Wenn diese Maßnahmen keine sinnvollen Ergebnisse liefern, so kann der alte Plan in das SQL Plan Management eingefügt werden.
  • Nach der Optimierung werden die SPA Tests wieder ausgeführt. Hierbei sollte stets nur ein Optimierungsschritt – und nicht mehrere Schritte – zwischen zwei Prüfungen durchgeführt werden. So lassen sich im Fehlerfalle schneller die Ursachen ermitteln. Selbst ein einziger Tuningschritt bezüglich einer SQL Anweisung kann zu unbeabsichtigten, negativen Effekten bei anderen SQL Anweisungen führen. Durch die konsequente Zerlegung der Tuning Aufgaben in Einzelschritte mit nachfolgender Validierung vereinfachen sich in diesen Fällen Analyseaktivitäten.
  • Die Tuning Ratschläge sind zu implementieren und die betreffenden SPA Tests auszuführen, bis alle SQL Wiederholungen in einem iterativen Prozess aufgelöst sind.
  • Im Rahmen der Optimierung ist stets zu prüfen, ob nicht an anderer Stelle durch die Veränderungen Leistungseinbußen entstanden sind. Wenn am Ende alle Anforderungen erfüllt sind und alle Optimierungspotentiale genutzt wurden, so kann die neue Statistik veröffentlicht werden.

Ergebnisse

Durch die Maßnahmen ist es gelungen, die SQL Anweisungen zu optimieren und auf dieser Basis neue Statistiken zu etablieren. So können negative Folgen auf businesskritische Systeme aufgrund veralteter Statistiken ausgeschlossen werden.

Zurück

Einen Kommentar schreiben