Sobes.tech
Senior

Milyen PostgreSQL tranzakció elszigeteltségi szinteket ismersz?

sobes.tech MI

Válasz az MI-től

A PostgreSQL-ben négy tranzakciós izolációs szint létezik, amelyek a SQL szabvány szerint vannak meghatározva:

  1. Read Uncommitted — a legalacsonyabb izolációs szint. Lehetővé teszi az adatok olvasását, amelyek még nem kerültek megerősítésre (dirty reads). A PostgreSQL gyakorlatilag úgy viselkedik, mint a Read Committed, mivel a dirty reads nem támogatott.

  2. Read Committed — az alapértelmezett szint. A tranzakció csak azokat az adatokat látja, amelyek a kérés pillanatában megerősítésre kerültek. A tranzakción belüli kérdések között más tranzakciók által végrehajtott változások is előfordulhatnak.

  3. Repeatable Read — a tranzakció a kezdete pillanatában készített adatpillanatképet látja. Minden kérdés ugyanazokat az adatokat látja, még akkor is, ha más tranzakciók módosítják és megerősítik azokat. Megakadályozza a nem ismételhető olvasásokat (non-repeatable read), de lehetővé teszi a fantom olvasásokat.

  4. Serializable — a legszigorúbb izolációs szint. Garantálja a tranzakciók teljes serializációját, megakadályozza a fantom olvasásokat, és olyan viselkedést biztosít, amely egy szekvenciális végrehajtással egyenértékű.

Példa az izolációs szint beállítására:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL műveletek
COMMIT;