Kann MySQL das Script verlangsamen ?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag,


    jeder kennt doch die Godfather Edits. Dort ist es doch immer so das die Stats die sich ein Spieler im Spiel erarbeitet erst gespeichert werden, wenn dieser sich ausloggt. Oder z.B. alle 45 Minuten zusätlich noch gespeichert werden. Als ich mal wieder ein bisschen angefangen habe zu scripten, dachte ich mir wieso ich das nicht gleich so mache das alles was der Spieler In-Game macht direkt in der MySQL Datenbank abgespeichert wird.


    Ich merke aber bei mir privat zu Hause immer, dass das Script langsamer wird. Lade ich meinen DM Server auf einen V-Server hoch von mir, läuft das ganze schon schneller. Jedoch merke ich, dass das Script sich einfach mal beendet. Ich versuche derzeit den Fehler zu finden oder herauszufinden wo genau das immer auftritt. Es ist aber immer unterschiedlich (ohne eine bestimmte Aktion durchzuführen).


    Ich denke immer das wenn ich alles was sich der Spieler In-Game erarbeitet direkt abgespeichert wird, dass dies eventuell ein Problem sein könnte. Ich habe derzeit den MySQL Server extern laufen, da ich die Probleme mit dem MySQL Plugin von StrickenKid habe das ich nicht über localhost auf einem Linux V-Server connecten kann (wer hierfür eine Lösung hat, soll mich bitte kontaktieren. An diesem Problem verzweifle ich langsam).


    Kann mein Vorhaben eventuell mal zu Problemen führen oder kann sogar dies der Auslöser für mehrere Serverabstürze sein ?


    Eure Meinung ist mir ziemlich wichtig, da ich vielleicht da wieder ansetzen kann.

  • Ja, das macht das Script sehr viel langsamer.
    Alles direkt abzuspeichern ist wirklich sehr Performance lastig und nicht Sinn der Übung.


    Für die Lauftzeit-Speicherung sind Variablen da, welche beim Disconnect gespeichert werden.


    #Brotfischbaron


    In schā'a llāh

  • Verwende einen extra Thread für deine Queries, dann wird es den eigentlichen Scriptablauf nicht stören = keine Lags, keine Abstürtze durch Warten auf Antwort von MySQL.

  • Wenn bspw. kein RAM mehr zur Verfügung stehen würde, könnte der Server abstürzen.
    Naja, externe DBs sind natürlich etwas langsamer, bei einer guten Verbindung, wie ein Server sie haben sollte, dürfte das aber nicht ins Gewicht fallen.


    #Brotfischbaron


    In schā'a llāh

  • Ich habe mir mal den Server überwacht und er war nicht wirklich ausgelastet. (Über htop) Was mir aber neulich mal aufgefallen ist das bei einer OneHit Sniper der Server abstürzen kann.


    Beispiel:
    Ich habe eine Sniper -> Ich schieße auf einen Spieler -> Server stürzt ab


    Hatte damit jemand schonmal Erfahrungen gehabt ? Ich gucke derzeit ob es nur an der Sniper lag das der Server abgeschmiert ist. Desweiteren werde ich mir mal das Tutorial von Cambell anschauen, da es mir auf den ersten Blick ziemlich gut gefallen hat.

  • Ich habe mir mal den Server überwacht und er war nicht wirklich ausgelastet. (Über htop) Was mir aber neulich mal aufgefallen ist das bei einer OneHit Sniper der Server abstürzen kann.


    Beispiel:
    Ich habe eine Sniper -> Ich schieße auf einen Spieler -> Server stürzt ab


    Hatte damit jemand schonmal Erfahrungen gehabt ? Ich gucke derzeit ob es nur an der Sniper lag das der Server abgeschmiert ist. Desweiteren werde ich mir mal das Tutorial von Cambell anschauen, da es mir auf den ersten Blick ziemlich gut gefallen hat.


    Was für ein MySQL Plugin verwendest du denn ? Bei dem von Strickenkid muss ich sagen, dass es stabiler ist als das von BlueG.
    Und ich verstehe deinen Sinn dahinter auch nicht, alles immer sofort abzuspeichern >.<.
    Dazu , wie Campbell schon sagte, lasse deine Querys threaded laufen.


    MfG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Desweiteren werde ich mir mal das Tutorial von Cambell anschauen, da es mir auf den ersten Blick ziemlich gut gefallen hat.


    Um sich den Sachverhalt über Threads klar zu machen wird dir das Tutorial nutzen, jedoch würde ich nicht mehr MySQL R6 verwenden, sondern R7 von BlueG, da es keine unthreaded Queries mehr unterstützt und mit Cachefunktionen viel schneller ist.