Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10252[/thread]

Max. Anzahl tables in MySQL



<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
kristian
 2007-08-29 12:24
#98808 #98808
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Ich versuche mich gerade in der Benutzung von MySQL.
Ich schreibe eine Anwendung die (hoffentlich) mal sehr viele Benutzer hat (> 5000).
Bei jedem Benutzer können 10.000 -> 50.000 Datensätze anfallen.
Also dachte ich mir dass ich für jeden Benutzer einen eigenen table in der MySQL-DB erstelle, z.B. customer_1, customer_2 usw. wobei die Zahl die ID aus dem table ist, indem alle Benutzer abgelegt sind.

Meine Fragen:
Wo ist das Limit? Wieviele tables passen rein? Kann es hier bei unterschiedliche MySQL-Versionen / Konfigurationen Abweichungen geben?
Macht es hinsichtlich der Performance Sinn oder habe ich da generell einen Denkfehler?

TIA
Kristian
nepos
 2007-08-29 12:30
#98809 #98809
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das ist eine Frage, für die du am besten die Dokumentation zu MySQL zu Rate ziehen solltest.
Die Doku findest du im Web unter http://www.mysql.org/doc/.
kristian
 2007-08-29 13:13
#98812 #98812
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Danke für deine Antwort, indes die Fragen die ich gestellt habe werden dort nicht beantwortet.
Ich habe es für meine DB, getestet 5000 tables anlegen hat funktioniert.
Was jetzt nicht mehr geht ist der phpMyAdmin, da kommt nur noch die Sanduhr.
Sowas steht bestimmt nicht in der MySQL-Doku, deshalb frage ich ja nach euren Erfahrungen.

EDIT: Bei näherer Betrachtung des Verzeichnisses dieser DB stelle ich fest, dass die Idee nicht wirklich gut ist, 3 Dateien pro table, sprich 15.000 im Verzeichnis muss bremsen...
Also müsste ich die Geschichte über diverse DB's splitten, hmmm, wenn das so weitergeht trete ich MySQL in die Tonne und benutze direkt das Filesystem.


Gruss
Kristian
pktm
 2007-08-29 14:38
#98816 #98816
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Sind das nicht arbeiten, die einem die Datenbank eigentlich abnehmen sollte damit man sich gerade nicht um das Aufspalten von Datensätzen kümmern muss?

Wenn deine Datenbank halbwegs normalisiert ist (=~ wenig Redundanzen enthält, am besten gar keine), dann sollte das für die DB kein Problem sein.

Ich denke, es ist Sache der Datenbank 50mio Datensätze gut verwalten zu können. Zumindest der MS SQL-Server hat damit keine Probleme (hab ich schon gesehen :-) ).
http://www.intergastro-service.de (mein erstes CMS :) )
bloonix
 2007-08-29 16:14
#98827 #98827
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
pktm+2007-08-29 12:38:19--
Ich denke, es ist Sache der Datenbank 50mio Datensätze gut verwalten zu können.

mit der Partitionierung von Tabellen ist die Anzahl Datensätze
zur Nebensache geworden - falls die Datenbank ein solches
Feature unterstützt. den Rest müsste der Index und die Platte
hergeben :-)

@kristian, wie schauts mit InnoDB aus?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
kristian
 2007-08-29 18:48
#98842 #98842
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Was mir Angst machte waren die Zugriffszeiten beim Suchen in den tables.
Ich habe mir jetzt mal ein paar Test gegönnt und bin bislang sehr positiv überrascht.
Zwar steigt mit zunehmender Anzahl der Einträge auch die Zugriffszeit, aber bei weitem nicht so dramatisch wie vorher befürchtet.

@bloonix
Platte war beim Testen ein SCSI-Raid 0 allerdings scheint nach dem ersten Zugriff der Index komplett im RAM zu sein und auch dort zu bleiben. (Linux)
innoDB würde - so wie ich die Doku verstehe - Schreibzugriffe beschleunigen, aber dies zu Lasten der Datensicherheit. Das will dann eher nicht.

Ich werde den Aufbau der Anwendung und der DB-Struktur anhand der neu gewonnen Erkenntnisse nochmal in Ruhe überdenken.

Danke für alle Anregungen.

Gruss
Kristian
Gast Gast
 2007-08-30 01:35
#98861 #98861
Ich war mal an einem Projekt beteiligt, das hatte > 26.000 tabellen, war soweit kein Problem, ob es sinnvoll ist das zu tun ist eine andere Frage ...
Ich würde das eher in eine Tabelle packen.
Rolf
ptk
 2007-08-31 00:42
#98903 #98903
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Man sollte auch bedenken, dass bei MySQL jede Tabelle aus einigen Dateien besteht, die sich alle im selben Verzeichnis befinden (zumindestens bei MyISAM). Bei vielen Tabellen könnte schon das Auffinden so einer Datei im Verzeichnis langsam werden.

Und wenn man bedenkt, dass jede Tabelle bestimmt einen oder mehr Filedeskriptor braucht, muss man sich Gedanken um Betriebssystemlimits machen.

@kristian: Kannst du die Stelle zeigen, bei der die Datensicherheit von InnoDB kommentiert wurde? Ich kann mir eigentlich nicht vorstellen, dass InnoDB unsicherer wäre als MyISAM.
Gast Gast
 2007-08-31 00:52
#98904 #98904
kristian+2007-08-29 16:48:22--
innoDB würde - so wie ich die Doku verstehe - Schreibzugriffe beschleunigen, aber dies zu Lasten der Datensicherheit. Das will dann eher nicht.

da möchte ich ptk beipflichten und würde auch gerne die Passage
lesen, in der das steht. Ganz im Gegenteil... durch Transaktionen,
die durch Verwendung von InnoDB unterstützt werden, hast du
sogar mehr Datensicherheit bzw. -konstistenz. Auch die Backups
sind viel besser durchzuführen. Bei MyISAM Tabellen wird oder muss
die ganze Tabelle gelockt werden, bis sie gesichert wurde, mit InnoDB
ist das nicht mehr nötig.
bloonix
 2007-08-31 00:56
#98905 #98905
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
@mods, könnte man den letzten Beitrag mir zuordnen...
schon wieder als Gast gepostet... wäre lieb von euch :/

@kristian, es kommen noch allerhand andere Vorteile
hinzu wie zum Beispiel die Speicherverwaltung etc.

Man kann auch einen Tablespace pro Tabelle anlegen
lassen, aber das wäre wieder der Fall von zuvielen
Filedeskriptoren...
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2007-08-29 12:24.