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:
-
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.
-
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.
-
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.
-
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;