Hello,
Wann sollte ich locken, und wann lohnt es sich nicht?
Ich meine das locken ist ja hauptsächlich um Komplikationen zu verhindern bei mehreren Abfragen o.ä., aber wenn nur Daten abgefragt werden, dann müsste es doch egal sein, wenn mehrer Anfragen kommen und die Daten eben mehrfach ausgeliefert werden?Und wie ist das mit den read und dem write lock,
ich verstehe das nicht ganz in der Manual?
Ein Lock ist immer dann notwendig, wenn zwischen zwei oder mehr gekoppelten Aktionen ein Konsistenzwechsel der Daten stattfinden könnte. Dieser Wechsel geschieht i.d.R. aus fremder Veranlassung, also durch einen weiteren User oder Prozess.
Ein Read-Lock verhindert nur das Verändern der Daten durch andere Prozesse, gestattet dieses aber noch, die Daten zu lesen.
In dem Moment, wo Du vor hast, die Daten zu verändern, benötigst Du ein Write-Lock.
Solange Du schreibst, kann dann niemand anders lesen oder schreiben.
Bei Datenbanken reicht meistens eine (gekoppelte) Satzsperre, das selten die Eigenschaften der gesamten Tabelle verändert werden, sondern nur die eines Datensatzes, bzw. verschiedener Datensätzes unterscheidlicher Tabellen.
Um einen einzigen Datensatz zu verändern, benötigt man bei SQL-Datenbanken kein eigenes Lock, da die Datenbank dies selbst besorgt.
Dies gilt auch für mehrere Datensätze einer Tabelle, wenn die Veränderung durch ein einziges Statement geschieht. Statements werden "atomar" abgewickelt.
Grüße
Tom