phpbar.de logo

Mailinglisten-Archive

AW: Locks
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AW: Locks



Hallo Dieter!

>> Wie kann man gesetzte Locks abfragen?
>>
>> Mit LOCK TABLES TEST WRITE setze ich einen Write Lock auf test.
>> Eine andere Session soll ohne Wartezeiten wissen koennen, welche tables
frei
>> sind (da sonst kein Login in das Programm moeglich).

>Genau die gleiche Frage habe ich vor kurzer Zeit auch gestellt,
>aber leider keine Antwort erhalten.
>Wenn man ein solches Lock setzt, und ein anderer Client
>möchte lesen, so wartet der andere Client solange, bis
>das Lock aufgehoben wird (Das kann in bestimmten Fällen
>ja dauern ...).
>Also so gehts nicht.

>Ich arbeite jetzt mit kooperativem Locking
>allerdings in Delphi so:

>[Delphi Code...]

>Der zweite Client erhält beim Aufruf von GetLock auf den
>gleichen String bei obiger Funktion "false" zurück.
>Er kann aber weiterhin lesen und schreiben.
>Der Programmierer entscheidet im Client, ob er darf.

Vielen Dank! Ich benutze jetzt auch get_lock(<Lock_Name>, TimeOut) und
release_lock(<Lock_Name>).
Was im MySQL Manual zwar dokumentiert ist, aber nicht explizit als
workaround angegeben ist:

release_lock gibt zurueck:
0, wenn der Lock einer anderen Session gehoert
1, wenn der Lock der eigenen Session gehoert hat und erfolgreich
zurueckgesetzt wurde
-1, wenn es den Lock gar nicht gibt.

Die Idee mit dem Tablenamen als Lock ist sehr gut - werde ich mir
ueberlegen.
So lassen sich Tables dann "wirklich" locken und deren Status wissen, muss
man nur die "Softlocks" (mutexe?) abfragen (per release_lock). Ein
"wirklicher" Lock hat den Vorteil, dass mit Applikationen von Drittanbietern
auf die Datenbank nichts schieflaufen kann. Der Nachteil: Die Drittanbieter
setzen vielleicht keine Softlocks.

Wenn ich mich nicht irre, kann man in den option-settings von mysql auch ein
timeout eintragen (weisst Du vielleicht wo? hab's irgendwann mal gelesen,
finde es aber nicht mehr).

Wuerde gerne wissen, ob man dann vielleicht eine Fehlermeldung bekommt.

Eine neue Funktion wie get_lock(<Lock_Name>, TimeOut) gleich fuer Tables
(get_table_lock(<table_name>, TimeOut)) waere super...

Fazit: Das Abfragen von table locks waere ein gutes neues feature in mysql -
weiss jemand, ob es geplant ist, absichtlich nicht implementiert wurde oder
bisher niemand dieses Problem hatte?


Viele Gruesse,
Yann




---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive