Basis van databases
Welk antwoord noemt van de isolatieniveaus die de SQL-standaard definieert juist de verschijnselen die bij READ COMMITTED kunnen optreden?
- ADirty reads, non-repeatable reads en phantom reads kunnen geen van alle optreden
- BDirty reads kunnen niet optreden, maar non-repeatable reads en phantom reads wel
- 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.