MySQL: Performance - viele oder wenige Tabellen

Genius

Mitglied
Hallo Community,
ich habe eine Frage bezüglich der Performance von MySQL.

Ich habe ein C-Programm welches mit mehreren Threads gleichzeitig läuft. Jeder dieser Threads hat seine eigene Verbindung zum MySQL-Server.

Meine Frage ist nun ob ich ein bottleneck erhalte, wenn alle Threads auf die selbe Tabelle zugreifen; es also besser wäre wenn ich die Daten in viele Tabellen aufteile.
Ist es schlauer jedem Benutzer z.B. eine eigene Tabelle für seine Daten anzulegen, oder macht das kein Unterschied wenn die Daten alle in der selben stehen und alle Threads ständig Operationen an ein und der selben Tabelle vornehmen?

Ich hoffe das ist verständlich, ansonsten führe ich das ganze gerne noch weiter aus.

Vielen Dank!
Genius
 
Meine Frage ist nun ob ich ein bottleneck erhalte, wenn alle Threads auf die selbe Tabelle zugreifen;

Kann ich dir so nicht beantworten, das kommt auch auf die verwendete Engine und ihre Lock-Methoden an. MyISAM lockt zum Beispiel tabellenweit bei allen DML-Operationen (Insert, Update, Delete...); heißt, alle ankommenden Selects müssen erstmal warten bis der Schreibvorgang erledigt ist.

es also besser wäre wenn ich die Daten in viele Tabellen aufteile.

Deine Datenbanktabellen sollen normalisiert sein. Eine logisch einwandfreie Struktur aufzuheben, um evtl. Performancevorteile zu ergatten, ist bei relationalen DBMS vollkommend zweckentfremdend.

Grundsätzlich sollte es bei mehreren Threads nicht wirklich Probleme geben. Bezüglich C & MySQL kannst du dir ja mal diese Hinweise [englisch] zu Gemüte führen.
 
Zurück