Basis van databases

Welk antwoord noemt van de isolatieniveaus die de SQL-standaard definieert juist de verschijnselen die bij READ COMMITTED kunnen optreden?

  1. ADirty reads, non-repeatable reads en phantom reads kunnen geen van alle optreden
  2. BDirty reads kunnen niet optreden, maar non-repeatable reads en phantom reads wel
  3. CDirty reads en non-repeatable reads kunnen niet optreden, maar phantom reads wel
Antwoord en toelichting tonen

Antwoord: B. Dirty reads kunnen niet optreden, maar non-repeatable reads en phantom reads wel

De SQL-standaard definieert vier isolatieniveaus, gerangschikt van het minste aantal voorkomen verschijnselen af: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ en SERIALIZABLE. Bij READ UNCOMMITTED kunnen alle drie verschijnselen optreden. READ COMMITTED leest alleen gecommitte gegevens en voorkomt zo dirty reads, maar omdat elke leesactie de op dat moment gecommitte waarde ziet, kunnen non-repeatable reads en phantom reads optreden. REPEATABLE READ voorkomt daarnaast non-repeatable reads, maar phantom reads kunnen nog optreden. SERIALIZABLE voorkomt alle drie en garandeert hetzelfde resultaat als wanneer de transacties in een bepaalde volgorde een voor een worden uitgevoerd. Hoe hoger het isolatieniveau, hoe meer wachten op locks en herhalingen er zijn en hoe minder werk gelijktijdig kan worden verwerkt, dus het niveau wordt gekozen naar de toepassing. In echte DBMS'en kunnen het standaardisolatieniveau en de verschijnselen die elk niveau werkelijk voorkomt sterker zijn dan de minimumeisen van de standaard.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. 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?
  2. Welke beschrijving van tweefasenvergrendeling (two-phase locking, 2PL), die voor het gelijktijdigheidsbeheer van transacties wordt gebruikt, is juist?
  3. 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?
  4. 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?
  5. 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?