[mysql] Table Design bei grossen mengen

TheCatcher

Grünschnabel
Hallo

Mein PHP Script speichert zur Zeit alle Inforamtionen in einer ASCCI-File.
Das soll umgestellt werden auf mySQL.

In den Files befinden sich weit mehr über 30tausend Zeilen an
Informationen. Diese müssen in die Table geschrieben werden und es werden
von Tag zu Tag um tausend Einträge mehr!

Nun meine Frage - wie sollte ich das Design der Table gestallten um die
Belastung des Server niedrig und die Geschweindigkeit hoch zu halten?

Information die in der Ascii stehen Zeie für Zeile:
1125446162#100|
1125446157#100|
usw.

Eigendlich dachte ich an so etwas:

CREATE TABLE `result_table` (
`i_time` int(11) NOT NULL default '0',
`i_wert` varchar(5) NOT NULL default '',
KEY `i_time` (`i_time`)
) ENGINE=MyISAM;

i_time -> 1125446157
i_wert -> 100

habt Ihr ne bessere Idee? oder gar andere Ideen?


Ich habe für jeden User eine solche Ascii-Datei mit sovielen Einträgen.

Nun habe ich überlegt ob die Ausgabe später der Daten schneller geht wenn
ich für jeden User eine eigene Table anlege.

oder soll ich alle user in eine Table speichern und mittels einer UserID
diese dann "filtern".

Ich bilde mir ein wenn jeder ne eigene Table bekommt würde es schneller
gehen!

denn eine Table weit über eine Million Einträge oder aber
Tausend Tables a 30tausen Einträge?


Wieviele Table maximal kann eien DB verwalten?

Danke Euch für Eure Meinungen
HS
 
Code:
id   i_time         i_wert   i_user_id 
==  =====        ====   =======
1    1125446157 100      1

Und das soll alles sein, was die Datenbank speichern soll?
Also in jedem Fall ist eine Datenbanksuche an der Stelle wesenlich schneller als eine Volltextsuche in einer ASCII Datei. und durch eine Einfache Selektierungsmöglichkeit durch i_user_id kannst du schnell die Ergebnisse eingrenzen.
Tausende von Tabellen machen keinen Sinn, das wird schwer administrierbar. Ausserdem wäre damit der Sinn einer Datenbank vollkommen ausgehebelt.
 
hi,
also die Datenbank kann mit mehreren Millionen Datensätzen gut umgehen. Solange du keine Kreuzabfragen über mehrere Tabellen hast solltest du keine Performance-Probleme bekommen. Und wie mein Vorgänger schon erwähnte, der Sinn einer Datenbank ist es nicht Daten redundant vorzuhalten. Eine Tabelle für eine Art von Einträgen ist besser ;).

Gruß
 
Mein Tipp:

Wenn Du user-bezogen Daten auslesen möchtest, erstelle einen Index

auf user_id und i_time

Wie bereits von Nospherates erwähnt:
Millionen von Datensätzen (insbesondere bei deiner einfachen Struktur) sind in wenigen Millisekunden durchsucht.

vop
 

Neue Beiträge

Zurück