mySQL 65 Felder pro Datensatz
-
Hi Leute,
ich möchte eine täglich durchzuführende Datenerfassung in eine mySQL Datenbank speichern. Es sind jedoch sehr viele Daten, ich würde also ca. 65 Felder (heißt das so?) pro Tag benötigen. Und das an allen Arbeitstagen des Jahres.
Hat jemand Erfahrungen mit so großen mySQL-Datenbanken. Läuft das noch stabil und sind die Abfragezeiten noch halbwegs akzeptabel? Bisher war meine größte DB 800 Datensätze mit 10 Spalten, von daher weiß ich da noch nicht so bescheid.
Ich hoffe ihr könnt mir helfen,
MFG
dope_dope
-
Meinst du jetzt 65 Datensätze pro Tag, oder eine von dir nicht genannte Anzahl von Datensätzen mit 65 Spalten?
Was die Abfragezeiten auch bei vielen Datensätzen angeht sollte MySQL eigentlich sehr gut sein. Ist ja auf Geschwindigkeit optimiert. Wenn du keine Transaktionen benötigst solltest du MyIsaam als Tabellentyp nehmen. Ist am schnellsten, unterstützt aber eben keine Transaktionen..
-
Ich meine 65 Spalten und einen Datensatz pro Tag. Das mySQL schnell ist weiß ich ja auch, aber wenn ich dann mal so 500 Datensätze mit 65 Spalten habe, nicht dass ich dann fünf Minuten warten muss..
Was ist MyIsaam? Ich denk mal, da ich nicht weiß, was Transaktionen sind, brauch ich sie nicht..
Also ich will nur Datensätze reinschreiben, nach bestimmten Kriterien wieder abfragen und selten auch mal was ändern. (select from bla where bla like bla usw. bzw. insert, update)
Aber du könntest mir ja trotzdem mal erklären, was Transaktionen sind!
-
Naja, allerdings unterstützt MyISAM auch keine Foreign Keys. Aber bei einfachen Modellen dürfte das kein Problem darstellen.
@dope_dope: Das ist überhaupt kein Problem. Das ist verglichen mit anderen Datenmengen eine wirkliche winzige Datenbank.
-
Hi,
also zum einen kann ich dich erstmal vollends beruhigen, einen Datensatz pro Tag ist wirklich eine winzige Datenmenge, auch wenn es über 10 Jahre benutzt wird.
Die Spaltenanzahl spielt auch nicht so eine riesen Rolle. Kommt natürlich auch deine Abfrage und deine Indices an. Auf Spalten in denen du oft suchst bzw. nach denen du oft sortierst solltest du einen Index legen. Wobei sich das bei den paar Datensätzen wohl kaum groß auswirken wird.Ich habe schon über 200.000 Datensätze in einer MySQL-Tabelle gehabt, zwar nur mit 5 Spalten, aber einfache Group By, order by oder selects mit ner where bedingung waren immer sofort da. Bei wilden Joins oder komplizierten Berechnungen etc. könnte das natürlich dann etwas anders aussehen
Zu den Transaktionen:
Eine Transaktion bedeutet das alle Änderungen die du an den Daten! vornimmst zwischengespeichert werden. Wenn du nun also 10 Inserts macht, dann 5 Updates und 3 Deletes kannst du hinterher entscheiden ob du mit dem Ergebnis zufrieden bist (ob alles geklappt hat) und dann ein "commit;" machen. Dann werden die Daten festgeschrieben. Macht man ein "rollback;" dann sind die Daten wieder auf dem Stand vom Anfang (bzw. dem letzten commit).
Man kann dann auch noch verschiedene Rollback-Punkte setzen an die man zurückspringen kann (k.A. ob das auch in MySQL geht, ich kenne es aus oracle).Achja, und die Contraints für Foreign-Keys funktionieren bei MyIsaam nicht, wie Magoon schon gesagt hat. (Das die Datenbank keine Inkonsistenzen zwischen verknüpften Tabellen zulässt. Stichwort: referenzielle Integrität)
ich hoffe das war so verständlich
mfg
tobi
-
Selbst wenn du > 1.000.000 Datensätze hast (oh wären ja 1 Mill. Tage) bekommst du keine Probleme. Mein größter Table waren 16 Spalten/25 Mill rows.
Du solltest dir aber Gedanken über die Anzahl Spalten machen. Stichwort: normalisierung.Wenn du z.B. ein Feld hast wo immer z.B. BERLIN drin steht ist dies Platzverschwendung.
Da mach dann eine neue Tabelle mit 2 Spalten. ID und NamederStadt
In der anderen Tabelle schreibst du dann nur die ID rein.
Somit spart man Platz und es wird schneller.