mySQL - Locks, low_priority oder ... ?

  • Mich beschäftigt folgende Frage: Getriggert durch ein Formular werden in einem Script verschiedene Aktionen durchgeführt und daraufhin eine ganz enge tableupdates durchgeführt (z.Z. schätzungsweise 100-150, tendenz steigend).


    Auf meinem lokalen Testssystem geht dies ruckzuck. Allerdings will ich auf nummersicher gehen und verhindern, dass sich die SQL-Befehle bei sehr zeitnaher doppelter Absendung durchmischen. Werden die beiden Blöcke von Befehlen sequentiell ausgeführt (also erst von Nutzer A getriggert, dann von Nutzer B getriggerte Aktionen) gobt es kein Problem.


    In der DB-Theorie gibt es ja Sachen wie atomare Transaktionen die aber von mySQL (meines Wissens) nicht standardmässig unterstützt sind.


    Ich habe jetzt rausgefunden, dass ich ein read-lock auf die tables setzen kann, der verhindert, dass andere Prozesse schreibend auf die tabelle zugreifen. Werden andereSchreibzugriffe dann serialisiert dahinter gesetzt, oder einfach ins Nirvana geschickt?
    Löse ich mit diesem Read-lock mein Problem? Gibt es eine alternative Möglichkeit mein Problem zu lösen?



    Die andere Frage bezieht sich auf die Performance: Da alle update-Abfragen auf die selbe table zielen, wie kann ich es erreichen, dass die Befehle "gepuffert" und dann am Stück ausgeführt werden. Ich habe dazu nur den Befehl "UPDATE LOW_PRIORITY table blah" gefunden, wird es das gewünschte tun und kann ich das zusammen mit einem lock verwenden? Gibts Probleme oder evtl. noch einen anderen Befehl?


    Danke im voraus.

  • Re: mySQL - Locks, low_priority oder ... ?


    Zitat

    Original geschrieben von R. U. Serious
    Die andere Frage bezieht sich auf die Performance: Da alle update-Abfragen auf die selbe table zielen, wie kann ich es erreichen, dass die Befehle "gepuffert" und dann am Stück ausgeführt werden.


    Das schreit nach transaktionssicheren Tabellen (BDB, InnoDB oder GEMINI), dort kannnst du erst alle Anweisungen an die DB schicken und diese dann über ein "commit" ausführen lassen, dabei werden die Modifikationen unterschiedlicher Prozesse auch sequentiell ausgeführt.

    www.mnies.dewww.pdaboard.dewww.v3info.de
    Lieber ein Pinguin der läuft, als ein Fenster das hängt...
    Merke: Wer nicht nachdenkt regt sich auch über nichts auf
    Der der nicht in Foren mit vertikaler Zappelwerbung postet.

  • Danke für den Tipp werde mich mal schlau machen, das bisschen lesen gerade schaut jedenfalls recht interessant aus. Allerdings habe ich vergessen zu erwähnen (und das ist in diesem Fall wohl ein Knackpunkt), dass diese Zugriffe nur sehr wenig (selten) zum Zuge kommen (nicht mehr als 10-15 im Monat), und da transaktionssichere DBs wohl deutlich langsamer sind, ist es deren Einsatz wohl nicht wert.
    Ich habe es jetzt mit den Locks realisiert. Der Nachteil deer ggü. innoDB u.ä. bleibt ist natürlich dass wenn das Ding während des Zugriffs/Locks abschmiert ich eine korrupte Datenbasis habe. Da hilft dann wohl nur das (ohnehin notwendige) regelmässige Backup.


    Trotzdem danke für den Tipp, denn erst über die Suche nach innoDB bin ich auf die entscheidenden Artikel gestoßen :D :).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!