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