Sobes.tech
Senior

Jaké úrovně izolace transakcí PostgreSQL znáte?

sobes.tech AI

Odpověď od AI

V PostgreSQL existují čtyři úrovně izolace transakcí definované standardem SQL:

  1. 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.

  2. 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.

  3. 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í.

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