Jaké úrovně izolace transakcí PostgreSQL znáte?
sobes.tech AI
Odpověď od AI
V PostgreSQL existují čtyři úrovně izolace transakcí definované standardem SQL:
-
Read Uncommitted — nejnižší úroveň izolace. Umožňuje číst data, která ještě nebyla potvrzena (dirty reads). V PostgreSQL se chová prakticky jako Read Committed, protože dirty reads nejsou podporovány.
-
Read Committed — výchozí úroveň. Transakce vidí pouze data, která byla potvrzena v okamžiku jednotlivého dotazu. Mezi dotazy v rámci transakce mohou nastat změny provedené jinými transakcemi.
-
Repeatable Read — transakce vidí snímek dat v okamžiku jejího začátku. Všechny dotazy v rámci transakce vidí stejná data, i když je jiné transakce mění a potvrzují. Zabraňuje nevratnému čtení (non-repeatable read), ale umožňuje phantom čtení.
-
Serializable — nejpřísnější úroveň izolace. Zaručuje úplnou serializaci transakcí, zabraňuje phantom čtení a zajišťuje chování ekvivalentní sekvenčnímu provádění.
Příklad nastavení úrovně izolace:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL operace
COMMIT;