Jörg Flatten IT-Consulting

Troubleshooting / Perfomanceuntersuchung /
Debugging

  • Problemanalyse

  • Fehlersuche

  • Lockingstrategien

  • Parallelisierung / Sequentialisierung

  • PL/SQL und T-SQL Debugging

Häufig sind gerade bei langjährig erfolgreichen Datenbankumgebungen im Laufe der Entwicklung entweder durch Datenmengen, Versionsaktualisierungen oder auch Erweiterungen schleichend Probleme aufgetreten, die den erfolgreichen Weiterbetrieb in Frage stellen.

Die Datenbankmanagement Werkzeuge liefern normalerweise allgemeine Hinweise, in welchem Bereich der Datenbankanwendungen ggf. Optimierungen helfen können, meist werden Indexe oder Serverkonfigurationen vorgeschlagen bzw. Deadlocksituationen aufgezeigt. Allerdings berücksichtigen diese Vorschläge selten die individuelle Implementierung und sind ggf. nicht kurzfristig erfolgreich.

Der Einsatz von Debugging und die Suche nach Quickwins gehört hier zu den typischen Aufgabenstellungen, bei denen sehr häufig erfolgreich unterstützt wurde.

Problemanalyse

Plötzlich wird die Anwendung immer langsamer … die Ergebnisse stimmen plötzlich nicht mehr … Ich kann die Funktion nicht mehr ausführen … Das ist früher nicht passiert …
Die Auswirkung ist eigentlich meist recht schnell beschrieben, aber wo liegt der Grund. Ist der Datendurchsatz gestiegen, fand ein Versions-Update statt und einige Funktionen wurden damals nicht getestet, wir haben „eigentlich“ nichts geändert, aber …

Mit der Beschreibung der Fehler-Situation lassen sich teilweise mögliche Ursachen schon vermuten, die durch weitere Tests verifiziert werden müssen. Durch die jahrelange Arbeit in und mit Datenbanken und dem Hintergrund, wie eine Datenbank eigentlich arbeitet, lassen sich mögliche Ursachen meist einkreisen und mögliche Lösungswege eruieren.

Fehlersuche

Der Schreibtischtest ist jedem ein Begriff, aber die Durchführung ist vielen heutigentags ein Graus. Dabei ist bei Zugang zum Algorithmus und einem Beispiel die Nachverfolgung der schnellste Weg, den Fehler einzugrenzen, zu identifizieren und der Behebung zuzuführen. Die größte Herausforderung ist hierbei oft, ein reproduzierbares Fehlerbild zu schaffen. Hier helfen die Vermutungen aus der Problemanalyse weiter sowie eine lange Erfahrung, um aus bekannten Fehlerbildern auf das aktuelle Fehlerbild schließen zu können.

Lockingstrategien

Wo ist der Unterschied zwischen clustered index und non clustered index, warum wird meine Transaktion gesperrt, obwohl ein ganz anderer Datensatz als von der Nachbartransaktion bearbeitet wird, wie kann ich verhindern, dass unnötige Sperren auftreten.
Häufig wird bei der Implementierung vorausgesetzt, die Datenbank macht das schon richtig. Aber im parallelen Betrieb führt dies ohne eine Berücksichtigung einer passenden Lockingstrategie zu Behinderungen. Und Locks an sich sind wichtig, gerade um die geforderten ACID Eigenschaften (AtomicityConsistencyIsolationDurability) sicherzustellen.

Parallelisierung / Sequentialisierung

Welche Schritte meiner Applikation sind eigentlich unabhängig voneinander (parallel) abarbeitbar und wann muss ich eine Reihenfolge einhalten. Ist die parallel query für die aktuelle Bearbeitung sinnvoll oder eher hinderlich.

Gerade mit unnötiger Parallelisierung wird teilweise ein überflüssiger Overhead von den Datenbanken geschaffen, die zu hohen Laufzeiten und zu hoher Prozessorlast führen. Hier ist im Bedarfsfall die Erwartung mit dem Verhalten der DB abzugleichen und ggf. die Datenbank auf einen alternativen Ausführungsplan hinzuweisen.

PL/SQL und T-SQL Debugging

Durch Einstellungen können nach Einbettung des Debugs in die aktuelle PL/SQL oder T-SQL Applikation einzelne Bereiche ein- oder ausgeschaltet werden oder auch die Intensität durch Unterscheidung zwischen Alarm, Error, Warning und Info gesteuert werden. Hierfür ist der Zugang zum Source der DB Applikation erforderlich.

Damit ist aber auch sicherstellbar, dass die Datenbankapplikation die Zweige mit den Daten durchläuft, die mit den Eingangsdaten angesteuert werden sollten.

Datenbank-Consulting

Schnittstellen

Datenmigration

Troubleshooting

Perfomanceuntersuchung

Debugging

Digitalisierung

Produktion

Produktions-Tracing

Coaching

Projektkoordination