Locks en Deadlocks

Op deze pagina:

Exclusive locks of write locks, voorkomen dat andere gebruikers een rij of tabel aanpassen.

Rijen die worden aangepast via een UPDATE of DELETE opdracht krijgen een exclusive lock voor de duur van de transactie. Hierdoor kunnen andere gebruikers de rij niet aanpassen totdat er een COMMIT of een ROLLBACK is geweest.

Deze locks gelden niet voor SELECT opdrachten. Normaal is dat geen probleem, maar als er eerst een SELECT wordt gedaan om vervolgens op basis van de uitkomst van de SELECT een UPDATE te doen, dan kan dat wel een probleem zijn omdat de gegevens in de tussentijd gewijzigd kunnen zijn. In zulke gevallen kan je SELECT ... FOR UPDATE gebruiken, die wel een lock zet op de rij tot nadat de UPDATE is uitgevoerd.

Het is ook mogelijk om handmatig een LOCK te zetten met de LOCK opdracht.

Deadlocks

Als twee transacties op elkaar wachten, dan ontstaat er een deadlock. Eén van de transacties zal dan moeten worden afgeblazen om verder te kunnen gaan.

 

Verwante artikelen