Isolatie. Read Committed- en Uncommitted-niveaus
In de context van databases verwijst isolatie naar het vermogen van een databasesysteem om de zichtbaarheid van wijzigingen die door gelijktijdige transacties zijn aangebracht, te beheersen. Het zorgt ervoor dat transacties onafhankelijk van elkaar functioneren, waardoor onderlinge beïnvloeding wordt voorkomen en de gegevensintegriteit behouden blijft.
Er zijn 4 isolatieniveaus in SQL:
- read uncommitted;
- read committed;
- repeatable read;
- serializable.
Read uncommitted
Dit is het laagste isolatieniveau waarbij transacties wijzigingen kunnen zien die door andere transacties zijn aangebracht, zelfs voordat deze zijn vastgelegd. Dit niveau staat vuile lezingen toe, wat betekent dat een transactie gegevens kan lezen die door een andere transactie zijn gewijzigd maar nog niet zijn vastgelegd.
Vuile lezingen
Implementatie
Om het isolatieniveau voor de transactie te specificeren, kan het volgende commando in de query worden gebruikt:
-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
/* Transaction query */
COMMIT;
-
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
: Deze instructie wijzigt het isolatieniveau voor de huidige transactie naar "Read Uncommitted", waardoor de transactie mogelijk gegevens kan lezen die door andere niet-vastgelegde transacties zijn gewijzigd; -
dit commando moet alleen binnen het transactiebereik worden gebruikt! Anders heeft het geen effect en wordt het standaard isolatieniveau gebruikt.
Het huidige isolatieniveau kan ook worden gecontroleerd met het volgende commando:
SHOW TRANSACTION ISOLATION LEVEL;
Read committed
Het Read Committed-isolatieniveau zorgt ervoor dat een transactie alleen gegevens ziet die zijn vastgelegd door andere transacties.
Dit betekent dat niet-vastgelegde wijzigingen die door andere transacties zijn aangebracht, niet zichtbaar zijn voor transacties die onder Read Committed-isolatie werken.
Hierdoor worden vuile lezingen voorkomen doordat een transactie alleen vastgelegde gegevens kan lezen. Dit transactieniveau heeft echter problemen met niet-herhaalbare lezingen.
Niet-herhaalbare lezingen
Het isolatieniveau "Read committed" staat niet-herhaalbare lezingen toe omdat het de leesbewerking vergrendelt op waarden die zich in niet-gecommitteerde transacties bevinden, maar de schrijfoperatie niet vergrendelt.
Daardoor kunnen we nieuwe gegevens schrijven naar de rij die op dat moment door een andere transactie wordt gelezen.
Verloren update
Door het ontbreken van een schrijflock is er nog een probleem met het read committed isolatieniveau - verloren updates.
Verloren updates treden op wanneer twee parallelle transacties proberen dezelfde rij te wijzigen. Hierdoor overschrijft de transactie die als laatste wordt gecommitteerd de waarden die door andere transacties zijn gecommitteerd.
Implementatie
We kunnen dit isolatieniveau ook specificeren met de volgende commando's:
-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
/* Transaction query */
COMMIT;
Het is belangrijk op te merken dat Read Committed het standaard isolatieniveau is voor de meeste Database Management Systemen, waardoor we het kunnen overslaan om het te specificeren.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4.35
Isolatie. Read Committed- en Uncommitted-niveaus
Veeg om het menu te tonen
In de context van databases verwijst isolatie naar het vermogen van een databasesysteem om de zichtbaarheid van wijzigingen die door gelijktijdige transacties zijn aangebracht, te beheersen. Het zorgt ervoor dat transacties onafhankelijk van elkaar functioneren, waardoor onderlinge beïnvloeding wordt voorkomen en de gegevensintegriteit behouden blijft.
Er zijn 4 isolatieniveaus in SQL:
- read uncommitted;
- read committed;
- repeatable read;
- serializable.
Read uncommitted
Dit is het laagste isolatieniveau waarbij transacties wijzigingen kunnen zien die door andere transacties zijn aangebracht, zelfs voordat deze zijn vastgelegd. Dit niveau staat vuile lezingen toe, wat betekent dat een transactie gegevens kan lezen die door een andere transactie zijn gewijzigd maar nog niet zijn vastgelegd.
Vuile lezingen
Implementatie
Om het isolatieniveau voor de transactie te specificeren, kan het volgende commando in de query worden gebruikt:
-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
/* Transaction query */
COMMIT;
-
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
: Deze instructie wijzigt het isolatieniveau voor de huidige transactie naar "Read Uncommitted", waardoor de transactie mogelijk gegevens kan lezen die door andere niet-vastgelegde transacties zijn gewijzigd; -
dit commando moet alleen binnen het transactiebereik worden gebruikt! Anders heeft het geen effect en wordt het standaard isolatieniveau gebruikt.
Het huidige isolatieniveau kan ook worden gecontroleerd met het volgende commando:
SHOW TRANSACTION ISOLATION LEVEL;
Read committed
Het Read Committed-isolatieniveau zorgt ervoor dat een transactie alleen gegevens ziet die zijn vastgelegd door andere transacties.
Dit betekent dat niet-vastgelegde wijzigingen die door andere transacties zijn aangebracht, niet zichtbaar zijn voor transacties die onder Read Committed-isolatie werken.
Hierdoor worden vuile lezingen voorkomen doordat een transactie alleen vastgelegde gegevens kan lezen. Dit transactieniveau heeft echter problemen met niet-herhaalbare lezingen.
Niet-herhaalbare lezingen
Het isolatieniveau "Read committed" staat niet-herhaalbare lezingen toe omdat het de leesbewerking vergrendelt op waarden die zich in niet-gecommitteerde transacties bevinden, maar de schrijfoperatie niet vergrendelt.
Daardoor kunnen we nieuwe gegevens schrijven naar de rij die op dat moment door een andere transactie wordt gelezen.
Verloren update
Door het ontbreken van een schrijflock is er nog een probleem met het read committed isolatieniveau - verloren updates.
Verloren updates treden op wanneer twee parallelle transacties proberen dezelfde rij te wijzigen. Hierdoor overschrijft de transactie die als laatste wordt gecommitteerd de waarden die door andere transacties zijn gecommitteerd.
Implementatie
We kunnen dit isolatieniveau ook specificeren met de volgende commando's:
-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
/* Transaction query */
COMMIT;
Het is belangrijk op te merken dat Read Committed het standaard isolatieniveau is voor de meeste Database Management Systemen, waardoor we het kunnen overslaan om het te specificeren.
Bedankt voor je feedback!