Antworten auf deine Fragen:
Neues Thema erstellen

MySQL: LOCK soll verzögern ...

Curanai

Aktives Mitglied

Verehrte PSDler,

ich habe ein rein theoretische Frage an euch und wünsche mir u. U. eine Korrektur.

Nehmen wir an, ich habe eine Table `t1` in einer Datenbank. Diese ist immer und ständig von LESEN und SCHREIBEN (durch User) betroffen.

Ich würde gern per Cronjob - und nur für einen Moment - auf exakt diese `t1` ein LOCK WRITE machen, damit der Cronjob in Ruhe seine Informationen ergänzen kann.

Meine theoretische Frage (ein Zweiteiler):
1. Gäbe es eine zweite Automation, was passiert in der Zeit von dem, wenn dieser auch da was aktualisieren möchte? Best case: Wartet ... (Priorität beider CJ ist identisch)

2. Bleiben die Clients (User) für den "zachten" (zarten) Moment tatsächlich auf "Bitte warten ..."?

Warum ich frage: Im MySQL-Handbuch (online) steht, dass der LOCK sich auf den jeweiligen "thread" (Prozess) bezieht. Beide Cronjobs sowie die User haben aber andere (weitere) Threads ... daher zweifel ich, ob ich mein Vorhaben mit LOCK realisieren kann. Im Prozess selbst benötige ich das LOCK nicht ... ich will nur für das Update am Datensatz ein kurzes, aber benötigtes, Exklusivrecht genießen, damit niemand sonst da reinschreibt (weder der andere CJ, noch ein User).

"Flag setzen zwecks 'gesperrt' und dann" ist leider unglücklich in dem Szenario und nicht hilfreich.

Habt Dank und

beste Grüße.


EDIT: Engine: MyISAM ... nicht ganz unwichtig. ^^
 

Curanai

Aktives Mitglied

Hi Duddle,

ja, "Algengrütze" - die Info kommt nicht aus dem Manual, sondern aus der Google-Suche - und das ist der Satz der Irritation: "LOCK TABLES sperrt eine ganze Tabelle für den Thread, also für den Prozeß, der gerade auf die Tabelle zugreift."

Ich hab mir jetzt von 5.0 bis 5.7 alle Seiten durchgelesen - scheint wirklich zu funktionieren wie benötigt!

Der Schubs hat schon gereicht --- merci!
 

rafoldi

Aktives Mitglied

Man kann die DB in den Einzeluser Mode fahren dann können Wartungsarbeiten durchgeführt werden. Ist aber wohl nicht ganz was Du Dir vorstellst.

Ebenfalls könnte man über begin Transaction Transaktionen starten, die neuen Informationen können nur über einen Dirty Read gelesen werden. Erst mit Abschluss der Transaktionen sind die Daten sichtbar.

Grundsätzlich kann man auch beim Lesen einen LOCK setzten.

Ich hoffe ich konnte Dir helfen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben