oli: Refchner Leistung / Geschwindigkeits Frage

Hallo

Ich habe eine Frage zur Rechnergeschwindigkeit für den Zugriff auf MySQL Tabellen mittels PHP.

Was gibt es für Tipps um möglichst schnelle Prozesse zu schreiben?

Also ich programmiere gerade eine online Game, ich mache dabei alles über MySQL Tabellen. Jeder benutzer bekommt einige Datensätze in bestehenden Tabellen, und zusätzlich noch ein paar eigene Tabellen für z.B. seine Post.

Meine eigentliche Frage ist jetzt: Muss man aufpassen, dass man den Server damit nicht überlastet?
Angenommen es würden sich einige Tausen Spieler registrieren, dann hätte ich Zehntausende Tabellen, und unzählig mehr Datensätze, weiters angenommen, es sind hundert user gleichzeitig online, und der Server muss jetzt pro Sekunde vermutlich 10-50 MySQL abragen machen, und daneben noch das übliche zeugs. Würde ihn das nicht überlasten?

Ich meine, wie machen das große internet Seiten wie gmx, oder das online Spiel Hattrick, bei dem über 40.000 user gleichzeitig online sind.
Kann man eine DB auf mehrere Server aufteilen?

Ok, ich glaube die Frage ist nicht besonders versiert, aber es würde mich sehr freuen, wenn mir jemand in meinem Verständnis für das ganze etwas weiterhelfen könnte.

lg
Oli

  1. Hallo

    Also ich programmiere gerade eine online Game, ich mache dabei alles über MySQL Tabellen. Jeder benutzer bekommt einige Datensätze in bestehenden Tabellen, und zusätzlich noch ein paar eigene Tabellen für z.B. seine Post.

    letzteres ist ziemlicher Unsinn.

    Angenommen es würden sich einige Tausen Spieler registrieren, dann hätte ich Zehntausende Tabellen,

    Nö, ganz genauso viele Tabellen wie bei einem einzigen Mitspieler. Wenn das nicht so ist, dann hast Du ein falsches Datenbankdesign.

    Freundliche Grüße

    Vinzenz

    1. Angenommen es würden sich einige Tausen Spieler registrieren, dann hätte ich Zehntausende Tabellen,

      Nö, ganz genauso viele Tabellen wie bei einem einzigen Mitspieler. Wenn das nicht so ist, dann hast Du ein falsches Datenbankdesign.

      Ich würde gar nicht die DB für so was missbrauchen, ausser um Login/Logout/Spiel-Statistiken zu speichern.
      Effektive Spielerdaten würde ich in Tempfiles pro Spieler speichern und erst beim Logout (oder expliziter Speichern-Funktion) das Bleibende in eine DB übertragen.

      mfg Beat

      --
      Selber klauen ist schöner!
    2. hallo Vinzenz,
      danke für deine Antwort, aber du sagst nur, dass das was ich mache misst ist, sagst mir aber nicht, wie man es besser programmieren könnte. Dieses Posting hilft mir also nicht wirklich weiter...

      Auf welche Weiße werden denn normalerweise online Spiele programmiert?

      1. Hallo,

        danke für deine Antwort, aber du sagst nur, dass das was ich mache misst ist, sagst mir aber nicht, wie man es besser programmieren könnte.

        das habe ich doch getan:

        Jeder benutzer bekommt einige Datensätze in bestehenden Tabellen, und zusätzlich noch ein paar eigene Tabellen für z.B. seine Post.

        letzteres ist ziemlicher Unsinn.

        Kein Benutzer bekommt eigene Tabellen. Gleichartige Daten gehören in *eine* *einzige* Tabelle.

        Dieses Posting hilft mir also nicht wirklich weiter...
        Auf welche Weiße werden denn normalerweise online Spiele programmiert?

        Das hängt vom Spiel und der Spielidee ab. Bei den Spielen, die ich bisher umgesetzt habe, benötigte ich die Datenbank im Wesentlichen nur für den Highscore.

        Freundliche Grüße

        Vinzenz

        1. und wo speicherst du die Variablen(Skills und so) ab?

          bzw die Post die sich die Spieler untereinander zuschicken können?

          1. Hallo,

            und wo speicherst du die Variablen(Skills und so) ab?

            Ja dann hat halt die Tabelle mit den Benutzern ein Feld "Skills".

            bzw die Post die sich die Spieler untereinander zuschicken können?

            Vielleicht als Datensätze in der Tabelle "Posts"?

            Gruß

            1. bzw die Post die sich die Spieler untereinander zuschicken können?

              Vielleicht als Datensätze in der Tabelle "Posts"?

              Naja, aber wäre es rein Zugriffszeit technisch nicht schneller, für 1000 user 1000 Tabellen mit je 50 Datensätzen zu haben , als eine Tabelle mit 50.000 Datensätzen?