PostgreSQL транзакциянын изоляция деңгээлдерин билесизби?
sobes.tech AI
AIден жооп
PostgreSQL-де, SQL стандартына ылайык, төрт транзакциянын изоляция деңгээли бар:
-
Read Uncommitted — эң төмөнкү изоляция деңгээли. Дайындалбаган маалыматтарды (dirty reads) окууга мүмкүндүк берет. PostgreSQLде, чындыгында, Read Committed сыяктуу иштейт, анткени dirty reads колдоого алынбайт.
-
Read Committed — стандарттык деңгээл. Транзакция гана ар бир жеке суроо-талаптын башында бекитилген маалыматтарды көрөт. Транзакциянын ичинде башка транзакциялар тарабынан жасалган өзгөртүүлөр пайда болушу мүмкүн.
-
Repeatable Read — транзакция башталганда алынган маалыматтардын сүрөтүн көрөт. Бардык суроолор ошол эле маалыматтарды көрөт, башка транзакциялар аларды өзгөртүп жана бекитсе да. Кайталоо мүмкүн эмес окууларды (non-repeatable read) алдын алат, бирок фантомдуу окууларга жол берет.
-
Serializable — эң катуу изоляция деңгээли. Транзакциялардын толук сериализациясын камсыздайт, фантомдуу окууларды алдын алат жана тартиби боюнча аткарууну камсыздайт.
Изоляция деңгээлин орнотуу мисалы:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL операциялары
COMMIT;