Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Isolatie: Repeatable Read- en Serializable-Niveaus | Acid
SQL-Optimalisatie en Queryfuncties

bookIsolatie: Repeatable Read- en Serializable-Niveaus

Repeatable Read

Het Repeatable Read isolatieniveau in databases zorgt ervoor dat wanneer een transactie wordt gestart, er een momentopname van de database wordt weergegeven die gedurende de hele taak hetzelfde blijft.
Dit betekent dat, zelfs als er andere wijzigingen in de database plaatsvinden terwijl u werkt, u alleen de gegevens ziet zoals deze waren bij aanvang.
Transacties onder Repeatable Read-isolatie houden leesvergrendelingen op alle rijen waarnaar zij verwijzen en schrijfvergrendelingen op rijen die zij invoegen, bijwerken of verwijderen. Dit voorkomt verloren updates, vuile en niet-herhaalbare lezingen.
Er is echter één probleem dat nog steeds kan optreden bij dit type isolatie: phantom read.

Phantom read

Een phantom read kan optreden wanneer één transactie gegevens leest en een andere transactie nieuwe records aan de database toevoegt. Hierdoor kunnen opeenvolgende leestransacties verschillende resultaatsets opleveren.

Non-repeatable read versus phantom read

Een non-repeatable read doet zich voor wanneer dezelfde query, uitgevoerd door Gebruiker A, verschillende waarden voor dezelfde rij retourneert bij opeenvolgende lezingen, meestal als gevolg van wijzigingen door Gebruiker B.

Een phantom read daarentegen treedt op wanneer dezelfde query, uitgevoerd door Gebruiker A, verschillende sets rijen retourneert bij opeenvolgende lezingen, zelfs als individuele rijen zelf niet zijn bijgewerkt.

We kunnen dit isolatieniveau specificeren in onze SQL-query met het volgende commando:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Serializable

Het Serializable-isolatieniveau is het hoogste niveau van isolatie in databases en zorgt voor de strengste vorm van gelijktijdigheidscontrole.
Op dit niveau worden transacties uitgevoerd alsof ze serieël verwerkt worden, één na de ander, ook al kunnen ze in werkelijkheid gelijktijdig worden uitgevoerd. Dit zorgt ervoor dat het resultaat van de transacties hetzelfde is als wanneer ze in een bepaalde seriële volgorde zouden zijn uitgevoerd, waardoor consistentie wordt behouden en alle bekende gelijktijdigheidsproblemen worden voorkomen.

Opmerking

Het gebruik van dit type isolatie kan leiden tot verminderde prestaties door toegenomen vergrendeling.

We kunnen de volgende instructie gebruiken om dit isolatieniveau in onze SQL-query in te stellen:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

question-icon

Koppel de isolatieniveaus aan hun beschrijvingen.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 7

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

What is the difference between phantom read and non-repeatable read?

Can you give more examples of phantom reads?

How does the Serializable isolation level prevent phantom reads?

bookIsolatie: Repeatable Read- en Serializable-Niveaus

Veeg om het menu te tonen

Repeatable Read

Het Repeatable Read isolatieniveau in databases zorgt ervoor dat wanneer een transactie wordt gestart, er een momentopname van de database wordt weergegeven die gedurende de hele taak hetzelfde blijft.
Dit betekent dat, zelfs als er andere wijzigingen in de database plaatsvinden terwijl u werkt, u alleen de gegevens ziet zoals deze waren bij aanvang.
Transacties onder Repeatable Read-isolatie houden leesvergrendelingen op alle rijen waarnaar zij verwijzen en schrijfvergrendelingen op rijen die zij invoegen, bijwerken of verwijderen. Dit voorkomt verloren updates, vuile en niet-herhaalbare lezingen.
Er is echter één probleem dat nog steeds kan optreden bij dit type isolatie: phantom read.

Phantom read

Een phantom read kan optreden wanneer één transactie gegevens leest en een andere transactie nieuwe records aan de database toevoegt. Hierdoor kunnen opeenvolgende leestransacties verschillende resultaatsets opleveren.

Non-repeatable read versus phantom read

Een non-repeatable read doet zich voor wanneer dezelfde query, uitgevoerd door Gebruiker A, verschillende waarden voor dezelfde rij retourneert bij opeenvolgende lezingen, meestal als gevolg van wijzigingen door Gebruiker B.

Een phantom read daarentegen treedt op wanneer dezelfde query, uitgevoerd door Gebruiker A, verschillende sets rijen retourneert bij opeenvolgende lezingen, zelfs als individuele rijen zelf niet zijn bijgewerkt.

We kunnen dit isolatieniveau specificeren in onze SQL-query met het volgende commando:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Serializable

Het Serializable-isolatieniveau is het hoogste niveau van isolatie in databases en zorgt voor de strengste vorm van gelijktijdigheidscontrole.
Op dit niveau worden transacties uitgevoerd alsof ze serieël verwerkt worden, één na de ander, ook al kunnen ze in werkelijkheid gelijktijdig worden uitgevoerd. Dit zorgt ervoor dat het resultaat van de transacties hetzelfde is als wanneer ze in een bepaalde seriële volgorde zouden zijn uitgevoerd, waardoor consistentie wordt behouden en alle bekende gelijktijdigheidsproblemen worden voorkomen.

Opmerking

Het gebruik van dit type isolatie kan leiden tot verminderde prestaties door toegenomen vergrendeling.

We kunnen de volgende instructie gebruiken om dit isolatieniveau in onze SQL-query in te stellen:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

question-icon

Koppel de isolatieniveaus aan hun beschrijvingen.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 7
some-alt