@CB: mod optimieren - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Olaf Mertgen (263 Beiträge) am Donnerstag, 13.Juni.2002, 16:57. WWW: auto-surf.de
    @CB: mod optimieren

      Hallo Christoph,

      ich hätte da mal wieder ein Problem. Bei auto-surf finden sehr viele Zugriffe in kurzer Zeit statt. Dabei werden Punkte vergeben, was wie folgt gelöst ist:
      get "Id==$bla", "tabelle";
      $Guthaben += $NeuePunkte;
      mod "Id==$bal", [Guthaben, $Guthaben], "tabelle";
      

      Das Problem besteht nun darin, dass es immer wieder zu Überschneidungen kommt, d.h. zwischen get und mod wird der Datensatz schon wieder ausgelesen und dadurch wird beim 2. mod ein falscher Wert geschrieben, da er noch von dem alten Guthaben ausging und nicht von dem neuen Guthaben.

      Das klingt zwar unwahrscheinlich, da get und mod sehr dicht beieinander liegen und die Zwischenzeit nur minimal ist, aber es passiert halt doch bei 0,01 % der Zugriffe und das ist bei über 100.000 Zugriffen pro Tag schon ganz schön viel.

      Bei MySQL kann ich im mod auf den alten Wert zugreifen, ohne auszulesen:
      update tabelle set guthaben = guthaben + NeuePunkte where id = bla;

      Könnte man sowas nicht in mod einbauen, dass ich also einen Wert mit mod verändern kann, ohne ihn vorher mit get auszulesen?

      Gruß, Olaf


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Olaf Mertgen (263 Beiträge) am Donnerstag, 13.Juni.2002, 16:57. WWW: auto-surf.de
    @CB: mod optimieren

      Hallo Christoph,

      ich hätte da mal wieder ein Problem. Bei auto-surf finden sehr viele Zugriffe in kurzer Zeit statt. Dabei werden Punkte vergeben, was wie folgt gelöst ist:
      get "Id==$bla", "tabelle";
      $Guthaben += $NeuePunkte;
      mod "Id==$bal", [Guthaben, $Guthaben], "tabelle";
      

      Das Problem besteht nun darin, dass es immer wieder zu Überschneidungen kommt, d.h. zwischen get und mod wird der Datensatz schon wieder ausgelesen und dadurch wird beim 2. mod ein falscher Wert geschrieben, da er noch von dem alten Guthaben ausging und nicht von dem neuen Guthaben.

      Das klingt zwar unwahrscheinlich, da get und mod sehr dicht beieinander liegen und die Zwischenzeit nur minimal ist, aber es passiert halt doch bei 0,01 % der Zugriffe und das ist bei über 100.000 Zugriffen pro Tag schon ganz schön viel.

      Bei MySQL kann ich im mod auf den alten Wert zugreifen, ohne auszulesen:
      update tabelle set guthaben = guthaben + NeuePunkte where id = bla;

      Könnte man sowas nicht in mod einbauen, dass ich also einen Wert mit mod verändern kann, ohne ihn vorher mit get auszulesen?

      Gruß, Olaf

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 14.Juni.2002, 13:47.
    Re: @CB: mod optimieren

      Das ist natürlich eine wichtige & berechtige Sache, vor allem weil es ja auch keine Möglichkeit gibt die Datenbanken zu sperren... Kommt auf jeden Fall in die nächste Version, ungefähr so:

      mod "Id==$bla", sub
      {
        $Guthaben+=$NeuePunke;
      }, "tabelle";
      

      Problem: Es wird eine Weile dauern, bis es soweit ist...

     Antworten


     
 Liste der Einträge von 46350 bis 46500:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!