Isolatie is de eigenschap op databaseniveau die bepaalt hoe en wanneer wijzigingen worden aangebracht en of ze zichtbaar worden voor elkaar, gebruikers en systemen. Een van de doelen van isolatie is om meerdere transacties tegelijkertijd te laten plaatsvinden zonder de uitvoering van elke transactie nadelig te beïnvloeden. Isolatie is een integraal onderdeel van de transactie-eigenschappen van de database. Het is de derde eigenschap van de ACID-normen (Atomicity, Consistency, Isolation, Durability) die ervoor zorgen dat gegevens consistent en nauwkeurig blijven.
Hoe isolatie werkt
Als Joe een databasetransactie uitvoert op hetzelfde moment dat Mary een andere transactie uitvoert, moeten beide transacties op een geïsoleerde manier op de database werken. De database moet ofwel de hele transactie van Joe uitvoeren voordat die van Mary wordt uitgevoerd, of omgekeerd. Deze exclusiviteit voorkomt dat Joe’s transactie tussentijdse gegevens leest die zijn geproduceerd als een neveneffect van een deel van Mary’s transactie die uiteindelijk niet in de database zullen worden vastgelegd. De isolatie-eigenschap zorgt er niet voor dat een specifieke transactie als eerste wordt uitgevoerd, alleen dat ze elkaar niet hinderen.
Isolatieniveaus
Er zijn vier niveaus van isolatie. Hogere isolatie beperkt het vermogen van gebruikers om gelijktijdig toegang te krijgen tot dezelfde gegevens. Hoe hoger het isolatieniveau, hoe meer systeembronnen er nodig zijn en hoe groter de kans dat databasetransacties elkaar blokkeren.
- serialiseerbaar is het hoogste niveau, wat betekent dat een transactie moet worden voltooid voordat een andere transactie kan beginnen.
- herhaalbaar leest toestaan dat transacties worden geopend zodra de transactie is gestart, zelfs als deze nog niet is voltooid. Dit niveau maakt phantom-lezingen mogelijk, of bewustzijn van ingevoegde of verwijderde rijen, zelfs als wijzigingen aan bestaande rijen niet leesbaar zijn.
- Lees toegewijd maakt toegang tot de gegevens mogelijk nadat de gegevens zijn vastgelegd in de database, maar niet eerder.
- Lezen niet-vastgelegd is het laagste isolatieniveau en maakt toegang tot gegevens mogelijk voordat de wijzigingen zijn aangebracht.
Naarmate het isolatieniveau wordt verlaagd, is de kans groter dat gebruikers leesfenomenen tegenkomen zoals niet-vastgelegde afhankelijkheden, ook wel vuile leesbewerkingen genoemd, die ertoe leiden dat gegevens worden gelezen uit een rij die is gewijzigd door een andere gebruiker maar nog niet is vastgelegd naar de databank.