en
de

SQL Server Performance Optimierung – Teil 3

22 August 2013
| |
Lesezeit: 3 Minutes

In den ersten beiden Teilen des Blogs haben wir uns von der Hardware über das physische und logische Datenmodel hinaufgearbeitet. Nun sind wir beim letzten Aspekt der SQL Server Performance Optimierung, der Applikation, angekommen. Nicht immer ist der SQL Server Schuld an einer schlechten Performance. Manchmal ist es auch die Applikation schlechthin, welche den SQL Server in die Knie zwingt.

Die Applikation

Um Fehlern oder Fehlverhalten der Applikation auf die Schliche zu kommen, kommen nochmals zwei bereits bekannte Tools zum Einsatz. Zum einen ist dies der SQL Server Profiler, zum anderen die Performance Counters.
Bei den Performance Counters interessiert uns dieses Mal die Anzahl User Connection  und die Anzahl der Transaktionen (zu finden unter SQL Server: General Statistics). Steigt die Anzahl der Verbindungen mit jedem Klick in der Applikation an und geht erst beim Beenden wieder zurück, so deutet dies auf ein falsches oder gar kein Connection Management in der Applikation hin. Die Verbindungen werden zwar geöffnet, danach aber nicht mehr geschlossen. Dasselbe gilt für die Transaktionen. Ist die Anzahl der offenen Transaktionen nur zunehmend, so wurde auf ein korrektes Transaktionsmanagement in der Applikation verzichtet. Abhilfe schafft in diesem Fall nur ein Review des Connection und Transaction Managements.
Der SQL Server Profiler gibt uns Aufschluss über die Abfragen, welche die Applikation an die Datenbank stellt. Hier gilt das Augenmerk bestimmten Patterns von Abfragen, welche wiederholt vorkommen. Werden zum Beispiel immer wieder die gleichen Stammdaten (z.B. Länder) abgefragt, so deutet das auf das nicht existieren eines Caches in der Applikation hin. In diesem Fall hilft es natürlich, immer wieder verwendete Daten (die sich sehr selten ändern) in der Applikation zu cachen und nicht jedes Mal neu zu laden. Dies macht umso mehr Sinn, je weiter weg die Datenbank (z.B. in der Cloud) sich befindet. Wird in der Applikation ein ORM (Object-Relation Mapper) wie Entitiy Framework eingesetzt, so muss ein besonderes Augenmerk auf das 1+n Problem geworfen werden. Dabei werden zu jedem Datensatz (z.B. Person) einzeln die dazugehörenden Kindelemente (die Telefonnummern der Person) abgefragt, obwohl dies mit einem JOIN in einem einzigen Statement möglich wäre. Viele ORM’s bieten hier Abhilfe, indem man bei der Abfrage angeben kann, welche Objekte zusätzlich geladen werden sollen. Bei Entity Framework ist dies mit der Include() Methode möglich.
Neben all den Patterns findet man im SQL Server Profiler auch Abfragen, die nicht optimal sind oder sogar auf Fehler in der Applikation hindeuten. Werden die Daten zum Beispiel alle zum Client übertragen und dort aggregiert, ist dies sicher nicht optimal. Hier hilft es, die einzelnen Abfragen durchzugehen. Abfragen, die sehr lange dauern oder sehr oft aufgerufen werden, können dann gezielt optimiert werden.

Tipps und Tricks

Zum Schluss noch ein paar Tipps und Tricks, auf die man beim Optimieren achten sollte:

  • Optimiere nie, ohne zu messen. Wie im Optimierungsprozess beschrieben, ist der erste Schritt immer das Messen der Performance. Erst danach kann mit dem Optimieren und Ändern des Systems begonnen werden.
  • Führe Messungen auf dem Livesystem durch. Es ist sehr schwierig auf einem Testsystem die genau gleiche Serverauslastung und denselben Workload wie auf dem Livesystem zu simulieren. Zudem ist es meist sehr umständlich, die gleiche Datenmenge wie auf dem produktiven System herzustellen.
  • Ändere immer nur etwas auf einmal. Werden 3 Änderungen auf einmal gemacht, so können das zwei Schritte vor und einen zurück sein. Welche Änderung etwas gebracht hat und welche nicht, findet man nur sehr schwer heraus.
  • Betrachte das System immer als Ganzes. Sinn der Performanceoptimierung ist es, dass das System schneller auf Benutzerinteraktion reagiert und der Benutzer/die Benutzerin besser arbeiten kann. Werden nur einzelne Teile des Systems betrachtet, so werden diese zwar schneller, das heisst aber noch lange nicht, dass dies dem Benutzer/der Benutzerin etwas bringt.

Links

Im Internet gibt es viele Seiten und Ressourcen, die sich mit der Performanceoptimierung des SQL Servers auseinander setzten. Hier einige, die ich als nützlich einstufe:

Kommentare (0)

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.

Erhalten Sie regelmäßige Updates zu neuen Blogartikeln

Jetzt anmelden

Oder möchten Sie eine Projektanfrage mit uns besprechen? Kontakt aufnehmen »