Andreas Korthaus: Wegen Performance auf Normalisierung verzichten?

Beitrag lesen

Hallo Christian!

Die Lösung meiner Probleme wäre ein kompletter Bruch mit "gutem" Datenbankdesign: ich werfe die Normalisierung einfach über den Haufen.

Tja, das habe ich auch schon oft gehört und gemerkt. Schön ist nicht unbedingt schnell. Der größte Teil der Daten dürfte wohl auf die Postings an sich fallen, da macht es IMH überhaupt nichts die ein oder andere kleine Spalte redundant zu speichern - wenn sich dadurch ein bedeutender Performance-Sprung erreichen läßt.

Das Problem ist zwar schon gelöst, aber trotzdem nochwas dazu:

Wenn ich zu jedem Thread speichere, wann und von wem das letzte Posting "gepostet" worden ist, dann kann die Anzahl der DB-Abfragen, die ich durchführen muss, gering halten. Ich würde damit sogar so weit kommen, dass jetzt pro Scriptaufruf nur noch ca. 8 DB-Abfragen durchgeführt werden müßten, was zwar IMHO immer noch sehr viel ist, aber deutlich besser als vorher.

Die Frage ist - wie machst Du Deine Tests? Mit entsprechenden Datenmengen wie es später sein wird? Denn dann kann das ganze auch anders aussehen, vielleicht sind die Flaschenhälse ja woanders als Du bisher glaubst. 8 Datenbank-Abfragen ist sicher nicht viel, die bekannten Boards haben teilweise 50 oder sogar 100 auf einer Seite, und die müssen sehr portabel geschrieben sein, können also nicht kompromisslos auf Performance getrimmt werden wie z.B. das Forum hier. Und wirklich langsam kommen die mir nicht vor - sind natürlich meist nicht so belastet wie das Forum hier!
Jedenfalls kann man IMHO die Performance nicht direkt an der Anzahl der DB-Abfragen festmachen, auch wenn es den Verbindungs-Overhead gibt, aber solange ein Script läuft bleibt die Verbindung eh bestehen, und dass mysql_query() an sich besondern viel kostet habe ich noch nicht bemerkt, es kommt ganz stark auf die Abfrage und deren Verwendung von indices an. Sortieren über die ganze Tabelle ist aber im allgemeinen immer schlecht, ich habe gute Erfahrungen gemacht indem ich die Daten zur Sortierung in einer temporäre HEAP-Tabelle geschrieben habe und darin sortiert habe, das hat bei großen Datenmengen ne Menge gebracht.

Die Nachteile, die mir dabei in den Sinn kommen:

  1. potentieller Verlust der Integrität der Daten

kommt drauf an wie Du das implementierst

  1. "unelegant"

ist wohl nicht wirklich wichtig, oder?

  1. redundante Speicherung von Informationen

Wenn s nur 5% mehr Daten werden ist das IMHO egal, bei 50% würde ich mir vielleicht Gedanken machen, aber auch da - wenn Du auf dem Server eh noch das 100-fache frei hast - who cares?

Viele Grüße
Andreas