Basis van databases
Transactie T1 heeft een gedeelde lock op een rij en leest die. T2 vraagt een gedeelde lock en T3 een exclusieve lock op dezelfde rij aan. Wat is juist voor de periode tot T1 zijn lock vrijgeeft?
- AT2 krijgt zijn lock direct, maar T3 moet wachten
- BZowel T2 als T3 moet wachten
- CZowel T2 als T3 krijgt zijn lock direct
Antwoord en toelichting tonen
Antwoord: A. T2 krijgt zijn lock direct, maar T3 moet wachten
Een gedeelde lock (shared lock) wordt genomen bij het lezen van gegevens; andere transacties kunnen ook gedeelde locks op dezelfde gegevens nemen en die tegelijk lezen, maar ze kunnen geen exclusieve lock nemen om te schrijven. Een exclusieve lock (exclusive lock) wordt genomen bij het wijzigen van gegevens, en zolang die wordt vastgehouden, kunnen andere transacties geen gedeelde en geen exclusieve locks nemen. In dit voorbeeld zijn de gedeelde lock van T1 en die van T2 verenigbaar, dus T2 krijgt zijn lock direct en kan lezen. De exclusieve lock van T3 is niet verenigbaar met de gedeelde lock van T1, dus T3 moet wachten tot T1 zijn lock vrijgeeft (en, omdat T2 ook een gedeelde lock heeft, ook tot T2 de zijne vrijgeeft). Het op deze manier met locks voorkomen van onderlinge beïnvloeding van gelijktijdig lopende transacties heet concurrency control (gelijktijdigheidsbeheer).