Mysql: maximale Tabellengröße ?

Hallo Leute,

meine Frage an all die, die damit Erfahrung haben:

Bis zu wieviel Einträge kann eine Tabelle haben, ohne das die Performance einbricht.
Also, ab wieviel Einträgen sollte man sich überlegen, die Tabelle aufzusplitten ?

Danke,
Swen

Ein paar hunderttausend oder auch Millionen Einträge müssten schon machbar sein, du solltest allerdings darauf achten dass bei allen Operationen ein möglichst selektiver (wenig gleiche Werte) Index greift, ein Fulltablescan ist bei so grossen Datenmengen natürlich verheerend.

Als Ergänzung zu Brunos Antwort, Datenbanken scheitern selten schlicht an der Datenmenge, die Obergrenze setzt meist die Komplexität der Abfragen.

Einfache SELECTs sind meistens kein Problem, sobald du Joins einbringst vervielfältigt sich aber die Datenmenge mit der intern gearbeitet werden muss. Hier kann ein unglücklich formuliertes SQL-Statement viel Performance kosten, obwohl es dasselbe Ergebnis wie ein optimiertes bringt.

Genauso wichtig sind den Abfragen entsprechend gesetzte Indexe. Ein Index ist eine Art Verweisliste auf die eigentlichen Datensätze der Tabelle, sortiert nach einem bestimmten Feld. Wenn du nach diesem bestimmten Feld suchst, dann bekommst du mit einem Index eine viel höhere Geschwindigkeit, weil er eben in dieser, nach dem Feld sortierten Verweisliste suchen kann und nicht die ganze Tabelle durchgehen muss.

Für jemand der das jeweilige Datenbanksystem gut kennt besteht hier meist ein sehr hohes Optimierungspotential in Bezug auf die Konfiguration der DB und die Formulierung der Abfragen.

Grüße, Robert

ok, danke für die Antworten.

Hi,

Also, ab wieviel Einträgen sollte man sich überlegen, die
Tabelle aufzusplitten ?

ei! Man sollte _niemals_ aufgrund der Datenmenge die Tabellenstruktur verändern! Solange die _Struktur_ der Daten gleich bleibt, haben sie auch alle in der selben Tabelle zu stecken.

Selbstverständlich gehe ich davon aus, dass Du Redundanz vermeidest, also z.B. wiederkehrende Daten in andere (anders strukturierte) Tabellen verschiebst. Oft zitiertes Beispiel: Anstatt Bestellnr., Menge, Preis…, Käufer, Postanschrift usw. in einer Tabelle zu haben, hast Du die Bestelldaten (bis einschl „…“) in einer Tabelle, die Kundendaten in einer anderen, die Du in der ersten referenzierst.

Das sind aber eigentlich Grundlagen relationaler Datenbanken :smile:

Cheatah