11 messages in com.mysql.lists.mysql-deRe: Row Locking
FromSent OnAttachments
cps-network (Martin Fernau)13 Apr 2006 06:05 
Barry13 Apr 2006 06:19 
cps-network (Martin Fernau)13 Apr 2006 07:42 
cps-network (Martin Fernau)13 Apr 2006 08:03 
Barry13 Apr 2006 08:14 
Ingo Strüwing13 Apr 2006 08:16 
Barry13 Apr 2006 08:17 
cps-network (Martin Fernau)13 Apr 2006 08:21 
cps-network (Martin Fernau)13 Apr 2006 08:31 
Daniel Penning13 Apr 2006 08:52 
cps-network (Martin Fernau)13 Apr 2006 09:32 
Subject:Re: Row Locking
From:cps-network (Martin Fernau) (m.fe@cps-net.de)
Date:04/13/2006 08:03:52 AM
List:com.mysql.lists.mysql-de

Am Donnerstag, 13. April 2006 15:20 schrieb Barry:

Entweder Flag in DB setzen (UPDATE SET flag="locked" WHERE blah)

Also manuelles eigenes Locking implementieren ...

oder: ´Lock´ in die Suche eingegeben: 1. http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

.. was sehr restriktiv ist, da bei einer WRITE-gelockten Tabelle IMHO gar nichts mehr geht. Ich will in der Regel allerdings nur _einen_ Satz ändern und dabei andere Benutzer nicht daran hindern, nicht betroffene Datensätze derselben Tabelle lesen zu können. Nur weil ein User in einer Tabelle mit 100.000 Datensätzen an der Tastatur eingeschlafen ist, will man doch nicht 100 andere Benutzer daran hindern die anderen Datensätze lesen zu können!? Und abgesehen davon: "... If a thread obtains a WRITE lock on a table, only the thread holding the lock can write to the table. Other threads are blocked from doing so until the lock has been released" -> Unbrauchbar

Würde statt dessen ein Fehler kommen und nicht geblockt werden, wäre das schon interessanter.

Ich scheine um eine eigene Implementierung nicht umhin zu kommen, was ich allerdings sehr schade, um nicht zu sagen 'sehr schlecht', finde. Denn niemand sonst außer die Datenbank selbst weiß am Besten, welche Datensätze nach einem SELECT alles betroffen waren. Um soetwas selbst zu implementieren muss ich mich ganz schön verrenken. Ich finde es irgendwie komisch, dass eine in die Jahre gekommene Programmiersprache wie COBOL so eine Funktionalität bietet - eine hoch moderne Datenbank wie MySql allerdings nicht. Wie machen das denn nur die anderen???

Gruß, Martin