Theoretische Frage: Datenbank-Überlastung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Theoretische Frage: Datenbank-Überlastung

    Hallo. Es dürfte mittlerweile allgmein bekannt sein, dass ich an einem Browsergame arbeite. Nun stellt sich nach dem "juhuu-das wird so geil, ein bisschen was funktioniert sogar schon"-Syndrom die Frage nach dem eher Technischen. Beispielsweise, auf welche Art und Weise ich eine Datenbanküberlastung vermeide.
    Wenn ich zum Beispiel ein Rohstoffe-Skript habe und (hoffentlich) mal mehrere hundert User mein Spiel spielen, dann wird bei jeder Aktualisierung auf die Datenbank zugegriffen, der timestamp der letzten Aktualisierung ausgelesen, der vom jetztigen timestamp abgezogen, der neue eingetragen und dann aufgrund der verstrichenen Zeit ein neuer Rohstoffbetrag eingetragen (wozu auch noch der Betrag von der letzten Aktualisierung abgefragt werden muss).
    Das versucht selbst bei nur ein paar eingeloggten Usern schon zu recht viel Daten-Transfer zwischen DB und Seite.
    Kann man das irgendwie verkleinern oder minimieren?

    Danke für alle Antowrten im Vorraus.

    Grüße,
    Waldi
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • Das Zauberwort heißt Subselect.

    Wenn du einen Wert aus der einen Tabelle brauchst um einen Wert aus einer anderen Tabelle zu aktualisieren, dann machst du das in etwa so:

    Quellcode

    1. UPDATE t1 SET column1 = (SELECT row2 FROM t2 WHERE column1 = t1.column1) WHERE column1 = $var;

    http://dev.mysql.com/doc/refman/5.1/de/subqueries.html

    Somit halbiert sich die Anzahl der Kommunikationen zwischen Webserver und Datenbankserver.

    Eine andere Möglichkeit sind Stored Procedures. Aber das ist erst die nächste Stufe.