Tag: "quick-tips"

Datenbank Design

Posted on Aug 20, 2005 von in SQL Server

Ein schlechtes logisches Datenbank Design führt zu einem schlechten physikalischen Datenbank Design. Falls man eine Datenbank von Beginn an designen soll, muß zunächst einmal das logischen Design stimmig sein. Erst dann geht es an die physikalische Implementierung. Diese braucht ebenfalls Zeit. Nur wenn sowohl logisches als auch physikalisches Design stimmig sind, kann man eine gute Performance der Datenbank erwarten. Und erst dann sollte man auch mit der Entwicklung der Applikation beginnen. Ein schlechtes logisches Design und das daraus resultierende schlechte physikalische Design kann unter Umständen eine Zeitlang durch leistungsfähige Hardware überspielt werden. Irgendwann einmal ist damit aber auch Schluß. Und dann ist es dann viel zu spät und zu kostspielig, etwas am Datenbank Design und an der Applikation zu ändern.

*****

Die Beachtung der allgemein anerkannten Empfehlungen zur Normalisierung von OLTP Datenbanken ist an und für sich schon ein Garant für eine gute Performance einer Datenbank. Hier sind einige Gründe, warum:

  1. Redundante Daten innerhalb einer Datenbank werden vermieden. Je weniger Daten vorhanden sind, umso weniger Arbeit muß der SQL Server verrichten, was sich positiv auf die Performance auswirken wird.
  2. Die Verwendung des NULL Flags wird auf ein Minimum reduziert. Die Verwendung des NULL Flags kann zwar helfen, bei Spalten variabler Länge Speicherplatz zu sparen, führt aber zu unnötig komplizierter Programmlogik bei Abfragen und kann sich sogar negativ auf die Performance auswirken, gerade bei WHERE Klauseln.
  3. Die Gesamtzahl an Spalten in einer Tabelle kann verringert werden. Dies wiederum bedeutet, daß mehr Zeilen auf eine einzelne Datenseite passen, was wiederum zu einer Verbesserung von SQL Server's Read Performance führt.
  4. Der T-SQL, der benötigt wird, um mit schlecht normalisierten Daten umzugehen, kann minimiert werden. Je weniger Code vorhanden ist, umso weniger Code muß abgearbeitet werden, um zum Ergebnis zu gelangen. Dies sollte sich postiv auf die Performance der Applikation auswirken.
  5. In einer normalisierten Datenbanken kann ein maximaler Nutzen aus Clustered Indexes erzielt werden. Gerade diese Art von Indexes stellen das vielleicht mächtigste Instrument des SQL Server's beim Zugriff auf die Daten dar.

*****

Die Entwicklung einer Applikation und einer OLTP Datenbank sollte man nicht bereits mit dem Hintergedanken einer Denormalisierung beginnen. Das oberste Ziel während des Designprozesses sollte es sein, die Datenbank in die 3. Normalform zu bringen. Falls man sich umsicher, was genau dies bedeutet, sollte man in der einschlägigen Literatur nachlesen. Ist die Datenbank erst einmal in der 3. Normalform, kann man sie einem Belastungstest unter realistischen Bedingungen aussetzen. Stellt man an diesem Zeitpunkt fest, daß die Performance durch eine Denormalisierung deutlich verbessert werden kann, dann, und nur dann, sollte man dies zum Anlass nehmen, hier bewußt gegen die Normalisierungsregeln zu verstoßen.

*****

  • 1
  • 2