Sobes.tech
Senior

PostgreSQL транзакциянын изоляция деңгээлдерин билесизби?

sobes.tech AI

AIден жооп

PostgreSQL-де, SQL стандартына ылайык, төрт транзакциянын изоляция деңгээли бар:

  1. Read Uncommitted — эң төмөнкү изоляция деңгээли. Дайындалбаган маалыматтарды (dirty reads) окууга мүмкүндүк берет. PostgreSQLде, чындыгында, Read Committed сыяктуу иштейт, анткени dirty reads колдоого алынбайт.

  2. Read Committed — стандарттык деңгээл. Транзакция гана ар бир жеке суроо-талаптын башында бекитилген маалыматтарды көрөт. Транзакциянын ичинде башка транзакциялар тарабынан жасалган өзгөртүүлөр пайда болушу мүмкүн.

  3. Repeatable Read — транзакция башталганда алынган маалыматтардын сүрөтүн көрөт. Бардык суроолор ошол эле маалыматтарды көрөт, башка транзакциялар аларды өзгөртүп жана бекитсе да. Кайталоо мүмкүн эмес окууларды (non-repeatable read) алдын алат, бирок фантомдуу окууларга жол берет.

  4. Serializable — эң катуу изоляция деңгээли. Транзакциялардын толук сериализациясын камсыздайт, фантомдуу окууларды алдын алат жана тартиби боюнча аткарууну камсыздайт.

Изоляция деңгээлин орнотуу мисалы:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL операциялары
COMMIT;