Wieviele Benutzer können gleichzeitig auf eine MySQL Tabelle zugreifen - gibt es ein Limit?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Anzahl der Einträge in einer Datenbank ist (fast) unbegrenzt, also da musst du keine Angst haben, an irgendwelche Limits zu stoßen. Und wenn du ordentlich mit Schlüsseln und Indizes arbeitest, wird das ganze von intern verwendeten effizienten Datenstrukturen (oft Bäume) auch sehr flott laufen.

Die Anzahl der Zugriffe auf einen einzigen Datenbankserver ist hingegen sehr beschränkt. Aber hier ist meist nicht die Datenbank-Implementierung (in deinem Falle MySQL) der Flaschenhals, sondern die Limitierung der Systemresourcen (Prozesse, Handles, Pipes, Sockets, ...) auf dem darunter liegenden System.

Im Übrigen ist MySQL auch nicht darauf ausgelegt, zumindest in der Standardkonfiguration, so exorbitant viele Anfragen zu bearbeiten. Für so etwas sollte man einen wohlorganisierten Cluster einsetzen und dabei auch auf genügend Spielraum und Redundanz achten. MySQL ist dafür leider ungeeignet.

Gute Datenbanken umgehen übrigens nicht ohne Grund die Dateisystemfunktionen, und arbeiten direkt auf einer Platte / Partition. Alleine durch diesen Trick kann man den Durchsatz merklich steigern! Des weiteren ist eine eigene Implementierung der Speicherverwaltung oft sinnvoll, aber das machen m. W. n. sowieso fast alle DB-Systeme so.

Einige umgehen auch den Netzwerkstack des Kernels, und implementieren ihren eigenen. Das hat dann zwar nicht mehr ausschließlich etwas mit Datenbanken zu tun, aber z. B. Akamai schafft damit mehr als 10000000 gleichzeitige Verbindungen pro Maschine in ihrem Proxy-Verbund. Zum Vergleich, ein "normaler" Apache schafft mit Mühe und Not ein Tausendstel davon.

Einige bessere Server, die auf viel Load ausgelegt sind implementieren auch ihren eigenen Prozess-Scheduler, aber trotzdem kommen diese meist nicht auf über 100000 gleichzeitige Verbindungen.

Warum schreibe ich das alles? Um dir zu zeigen, dass du mit deinem halbgaren PHP-MySQL-Fummel-Server sowieso keine große Anzahl von Anfragen abarbeiten kannst. Dafür benötigst du ein ganz anderes Front- und Backend. Du kannst es natürlich versuchen, aber im Endeffekt wird nur so etwas ranziges, wie GuteFrage dabei raus kommen. Die haben auch jeden Tag Serverausfälle. (Ich habe letzte Woche einen Crawler für GF geschrieben, weil ich mal sehen wollte, wie stabil deren System ist, und im Schnitt scheitert jede 100ste Anfrage, wobei das ganze System pro Tag bis zu einer halben Stunde down ist, vor allem zu Stoßzeiten.)

Trotzdem, du wirst mit deinem System nicht an die Grenzen kommen! Da bin ich mir sicher, und du kannst dabei auch erst mal ganz ruhig sein! Falls es doch mal eng werden sollte, kannst du immer noch auf ein anderes System umsatteln. :)

Viel Erfolg mit deinen Flashcards! :)

Die MySQL-Tabelle sollte in der Regel nur für dich auf deinem Server bzw. dem Server deines Anbieters sein. Du solltest in der Regel allein darüber verfügen können. Denn die SQL-Data hat ja normalerweise Daten enthalten, die nur Du kennst, nachdem sich bspw. User bei dir auf der Homepage angemeldet und dir persönliche Daten übermittelt haben. Deshalb bekommst Du ja von deinem Provider, der dir den SQL anbietet, ein eigenes Userkonto mit Passwort. Natürlich kannst Du, solltest Du einen eigenen Server daheim stehen haben, selbst entscheiden, wer auf diese Daten zugreifen kann und wer nicht. Jedem, der das also tun darf, solltest Du ein Passwort "verabreichen".

Setzt Du die Schreib und Bearbeitungsrechte jedoch allen offen, hat also jeder das eingeräumte Recht, die Daten in der MySQL-Tabelle zu bearbeiten.

User, die sich auf z.B. deiner Homepage anmelden und dafür ein Account bekommen, bekommen in der Regel auch ein Passwort für den eigenen Account (Konto). Aber auf deine MySQL sollte wirklich kein anderer Zugang haben dürfen als du selbst oder die-/derjenige, dem Du das erlaubst. User haben auf diese Daten keinen Zugriff. Und das sollte unbedingt beachtet werden... Sonst hast Du irgendwann mal Chaos und evtl. viele viele Spams oder Viren drauf... Behandle deine MySQL bitte immer offline bzw. nur Du...

Abspeichern kannst Du darauf so ziemlich alles. Userdaten, Passwort, Adresse, Email, Downloads, Uploads (Bilder und Dateien, die du bekommen hast von Usern) und all das in Hülle und Fülle, wie Vorschreiber da schon bereits richtig erkannt haben, unbegrenzt... Auch geteilte Tabellen sind möglich, in denen Du dann die Daten getrennt von einander hinterlegst und bearbeitest.

Ich hoffe, ich konnte Dir diese Frage etwas genauer beantworten.

Für mich klang die Frage eher nach dem Zugriff auf deine SQL-Tabelle, also wer und wie viele darauf zugreifen können. Da solltest Du mit der MySQL sehr vorsichtig sein...

Lieben Gruß

MJE

Bei meiner Datenbank (DB2 von IBM) wird die maximal mögliche Anzahl der User in der Konfiguration festgelegt. Diese Zahl muss sich natürlich nach den vorhandenen Resourcen richten. Unbegrenzt ist diese Zahl aber auch nicht, aber immerhin kann ich in die Konfiguration ein Limit eintragen, das praktisch für alle Fälle ausreicht. Je nach Lizenz kann sich daraus auch eine Limitierung ergeben.

Für den Fall, dass die Zahl der User mal den eingestellten Wert überschreiten sollte, gibt die Datenbank bei der Anmeldung eine Fehlermeldung aus. Das Programm kann dann das Einloggen mit einem entsprechenden Hinweis abweisen.


Kommt drauf an wie komplex die Anfragen sind, wieviel Speicher die Server haben und wie schnell die Festplatten sind.

Wenn die Anfragen sehr einfach oder gut getuned sind , kann ein SQL Server sehr viel mehr schaffen.

Teste/Simuliere es am besten. Das hängt von vielen Faktoren auf der Hardware- und Softwareseite ab.