dedlfix: Mysql Eine Tabellen auf mehrer verteilen, atomar 1:n

Beitrag lesen

Tach!

Da er Kommentare auch noch in der Tabelle hat kann es schnell sehr viel werden. Nehmen wir mal an 10 Länder haben die gleiche Sehenswürdigkeit -> 10 Redundanzen. Jedes Land hat 10 Kommentare = 10 * 10 Redundanzen = 100 mal die Gleiche Sehenswürdigkeit. Das ist für die Datenbank auf jeden Fall ein Klacks (noch)!

Das ist nach seinem alten Datenmodel genau ein Datensatz. Der hat aber 10 Länder und 10 Kommentare trennzeichensepariert in den entsprechenden Feldern stehen. Zumindest hat er das so für die Kommentare erwähnt.

Jetzt nehmen wir mal weiter an die Seite boomt und bekommt viele Kommentare. Dadurch würde die Tabelle (unnötig) wachsen. Selbst wenn es einfach ein "supi *Freu*" Kommentar ist, wird die Sehenswürdigkeit mit kopiert.

Dann bleibt es weiterhin ein Datensatz. Nur das Kommentarfeld wird länger.

Bei sagen wir mal 2 Millionen Datensätze kann eine Änderung von 100 Rechtschreibfehlern schon etwas dauern.

Nicht länger als ein paar Sekündchen, wenn überhaupt. Selbst ohne Index ist das einmal durch die Tabelle rödeln, fertig. Und es ist keine Aktion, die ständig durchzuführen ist. Kritischer sind da häufige Abfragen, die eine große Datenmenge erzeugen (auch wenn das nur vorübergehend und intern ist), zum Beispiel Joins bei denen die Datenmenge durch Bedingungen nicht genügend klein gehalten werden kann.

Ich kann aktuell nichts zur Datenmenge sagen, da ich die nicht kenne. Auch die restlichen Felder der Tabelle kenne ich nicht. Je mehr Tabellenfelder die Tabelle hat desto schneller geht sie in die Knie. Bei einer meiner Vergangenen Projekte hatten wir eine Tabelle mit vorbildlichen Index drauf, 50 Tabellenfelder und ca. 1 Millionen Datensätze. Da hat das Suchen nach einem Indexierten Datensatz an die 10 Sekunden gedauert.

Das sagt nicht viel aus. Wurde denn der Index überhaupt verwendet? Konnte er überhaupt verwendet werden? Bei LIKE zum Beispiel kann er nur verwendet werden, wenn man foo% sucht. Bei %foo oder %foo% kann ein einfacher (MySQL-)Index aus Prinzip nicht helfen und kann dann auch nicht mehr als vorbildlich bezeichnet werden.

Lerne an einer einfachen Struktur und baue die Datenbank so auf, dass sie von vornherein ein paar Millionen Datensätze schafft. Später das Ganze Umzubauen kann sich sehr schwierig herausstellen.

Naja, man darf auch von Anfang an mit realistischen Mengen planen und muss nicht gleich einen Cluster aufsetzen. Das ist ein Abwägung zwischen einem ständigen Arbeiten mit einer für zu große Anforderungen dimensionierten Struktur und einer einmaligen Umbauaktion. Es ist auch eine Geldfrage, ob man ein gleich Supersystem bezahlen will oder erst später einen Umbau, falls nötig. Zuviel des Guten ist nicht in jedem Falle wunderbar.

dedlfix.