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?

  1. AT2 krijgt zijn lock direct, maar T3 moet wachten
  2. BZowel T2 als T3 moet wachten
  3. 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).

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. Welke beschrijving van tweefasenvergrendeling (two-phase locking, 2PL), die voor het gelijktijdigheidsbeheer van transacties wordt gebruikt, is juist?
  2. Transactie T1 nam een exclusieve lock op rij A en vroeg daarna een lock op rij B aan, terwijl T2 een exclusieve lock op rij B nam en daarna een lock op rij A aanvroeg, zodat geen van beide verder kan. Wat doet een DBMS doorgaans wanneer het deze situatie detecteert?
  3. Bij het wijzigen van gegevens leggen veel DBMS'en de wijzigingen vast in een log (journaal) en schrijven ze die log naar niet-vluchtige opslag vóór de database zelf (WAL: write-ahead logging). Wat is de belangrijkste reden voor deze aanpak?
  4. Er zijn transacties T1 tot T5, en vóór een storing is één checkpoint genomen. T1 is vóór het checkpoint begonnen en gecommit. T2 en T3 zijn vóór het checkpoint begonnen; T2 is na het checkpoint maar vóór de storing gecommit, en T3 was op het moment van de storing niet gecommit. T4 en T5 zijn na het checkpoint begonnen; T4 is vóór de storing gecommit, en T5 was niet gecommit. Welke transacties moeten bij het herstel na de storing met de log een rollforward krijgen?
  5. Op de kolom LidNr van de tabel Lid met 1 miljoen rijen is een index in de vorm van een B+-boom aangemaakt. Welke combinatie van het effect dat in het algemeen mag worden verwacht en de prijs daarvoor is juist?