SQL Server 04.04.2011, 16:14 Uhr

Tuning-Grundlagen (Datenmodellierung)

Nicht jeder Entwickler möchte sich intensiv mit Datenbank-Performance-Aspekten auseinander setzen. Wenn Sie ein paar einfache Grundregeln beachten, die jeder Datenbank-Entwickler kennen sollte, können Sie zumindest die gröbsten Fehler vermeiden. Die Grundregeln werden am SQL Server vorgestellt, sind aber nahezu unverändert auf alle SQL-basierten relationalen Datenbankmanagementsysteme (RDBMS, wie beispielsweise Oracle, DB2 etc.) übertragbar. Das heutige Thema: Datenmodellierung.
Ein nicht ganz unwesentlicher Aspekt für die Datenbank-Performance ist die Datenmodellierung. In der Datenbanktheorie lernen Sie normalerweise, dass Sie Tabellen so weit wie möglich normalisieren sollten, um Redundanzen zu vermeiden. Unter Performance-Aspekten ist dies aber nicht immer sinnvoll. Insbesondere dann wenn Daten zweier Tabellen immer zusammen verwendet werden, ist es eine Überlegung wert, diese vielleicht gleich in einer Tabelle abzulegen. Dabei nehmen Sie dann bewusst Redundanz in Kauf, sparen dafür aber den Verwaltungs-Overhead eines Joins ein. Hier gilt es, mit gesundem Menschenverstand abzuwägen und dabei nicht allzu dogmatisch vorzugehen. Die nachfolgend angeführten Überlegungen können bei der Entscheidung helfen:

 Gründe, die für Normalisierung sprechen

  • Die verknüpfte Tabelle enthält vergleichsweise wenige Zeilen.
  • Die verknüpfte Tabelle enthält viele und/oder breite Spalten.
  • Die Daten in der verknüpften Tabelle ändern sich häufig.

 Gründe, die für bewusste Denormalisierung sprechen

  • Beide Tabellen enthalten ungefähr dieselbe Zeilenzahl (oder sind im Extremfall sogar 1:1-verknüpft).
  • Die verknüpfte Tabelle enthält außer dem Primärschlüssel nur eine weitere Spalte (insbesondere dann, wenn diese nicht viel mehr Speicher benötigt als der Primärschlüssel selbst).
  • Die Daten in der verknüpften Spalte ändern sich nur selten.
Insbesondere das letztgenannte Kriterium machen sich Data Warehouses zu Nutzen. Da die Daten hier beispielsweise nur einmal täglich (genau genommen eher nachts) aktualisiert aber sehr häufig gelesen werden, hält man diese bewusst denormalisiert vor, auch wenn die anderen beiden Kriterien eher dagegen sprechen.
Aber es gibt noch weitere Möglichkeiten zur Optimierung eines Datenbankservers. Der nächste Teil dieser Serie widmet sich der Indexoptimierung. (Robert Panter/am) 



Das könnte Sie auch interessieren