Sobes.tech
Senior

Milliseid PostgreSQL tehingu isolatsiooni tasemeid teate?

sobes.tech AI

Vastus AI-lt

PostgreSQL-is on neli transaktsiooni isolatsiooni taset, mis on määratletud SQL standardi järgi:

  1. Read Uncommitted — madalaim isolatsiooni tase. Lubab lugeda andmeid, mis pole veel kinnitatud (dirty reads). PostgreSQL-is käitub see praktiliselt nagu Read Committed, kuna dirty reads ei ole toetatud.

  2. Read Committed — vaikimisi tase. Transaktsioon näeb ainult neid andmeid, mis on kinnitatud iga üksiku päringu ajal. Transaktsiooni jooksul võivad toimuda muudatused teiste transaktsioonide poolt.

  3. Repeatable Read — transaktsioon näeb andmete hetkepilti selle algusest. Kõik transaktsiooni sees tehtud päringud näevad samu andmeid, isegi kui teised transaktsioonid neid muudavad ja kinnitavad. Väldib mitte-korduvat lugemist (non-repeatable read), kuid lubab vaimluse lugemisi.

  4. Serializable — kõige rangem isolatsiooni tase. Tagab täieliku transaktsioonide serialiseerimise, väldib vaimluse lugemisi ja tagab käitumise, mis on võrdväärne järjestikuse täitmisega.

Näide isolatsiooni taseme seadistamisest:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL-operatsioonid
COMMIT;