Michael Schröpl: MySQL: Performaceproblem

Beitrag lesen

Hi Andreas,

Doch, die Indizes werden dann bei jeder Datenmodifikation
aktualisiert. Deshalb ist es auch wichtig, daß Du nur jene
Indizes anlegst, die wirklich benötigt werden, da die
Aktualisierung der Indizes bei Insert, Updates und Deletes
auch einiges an Rechenleistung brauchen.
Hm, ich hatte aber mal gehört, das die zwischendurch immer wieder
neu erstellt werden müssen, oder werden die bei vielen automatischen
inserts, updates und deletes irgendwann wirklich etwas durcheinander
und langsamer?

Wenn Du einen vollständig balancierten binären Baum hast, dann kostet
die Suche eines Blattes innerhalb dieses Baums exakso viele Vergleiche,
wie der Baum "tief" ist.
Wenn der Baum durch Löschungen an der einen und Einfügungen an der an-
deren Stelle "schief" wird, dann werden einzelne Suchvorgänge schnel-
ler und andere langsamer - im Schnitt werden sie allerdings langsamer.
Außerdem ist für das Anlegen neuer Einträge neuer Speicherplatz not-
wendig, während beim Löschen alter Einträge nicht immer nutzbarer
Speicherplatz frei wird.
Ein "degenerierter" Indexbaum ist also nicht nur langsamer, sondern
vor allem auch größer, d. h. er belegt mehr Platz auf der Festplatte.

Und was macht man dann? Die indices löschen und neu erstellen
(phpmyadmin)?

Genau das.
Während einer solchen Änderung wird Dein System allerdings nicht
nutzbar sein - das macht man in einer "Wartungspause", vielleicht am
Wochenende oder auch nur alle paar Monate einmal - je nachdem, wie
hoch Deine Änderungsrate ist.

Meine Anmerkungen betreffen allerdings schon wirklich hohe Performance-
Anforderungen. In den meisten Fällen brauchst Du Dich um solche Dinge
nicht selbst zu kümmern - wenn Du nicht pro Tag mehrere Prozent Deines
Datenbestandes austauschst, reicht das, was die Datenbank von sich aus
kann, eine ganze Weile aus.

Viele Grüße
      Michael