Маалыматтар базаларындагы транзакциялардын изоляция деңгээлдерин билесиңби?
sobes.tech AI
AIден жооп
SQL стандартында транзакциялардын төрт деңгээли аныкталган: Read Uncommitted, Read Committed, Repeatable Read, Serializable.
-
Read Uncommitted: Эң төмөнкү деңгээл. Транзакция дагы бекитилбеген маалыматтарды окуй алат (б.а. башка транзакция тарабынан жасалган, бирок дагы бүтпөгөн
COMMITжасалбаган). Бул "кызыл" окууларга алып келет (dirty reads). -
Read Committed: Транзакция гана башталгандан же анын жүрүшүндө бекитилген маалыматтарды көрөт. "Кызыл" окууларды алдын алат, бирок кайра кайталанбаган окууларды (non-repeatable reads) жана фантомдорду (phantom reads) кабыл алат.
- Кайталанбаган окуулар: Бир эле транзакциянын ичинде бир окуу башка окуудан айырмаланган маалыматтарды кайтарат, анткени башка транзакция алардын өзгөртүп, бекиткен.
- Фантомдор:
WHEREшарттуу суроо жүргүзүлгөндө, экинчи транзакция шартка ылайык келген саптарды кошот же өчүрөт, жана биринчи транзакциянын кайра аткарылышы башка натыйжаны берет.
-
Repeatable Read: Транзакция гана башталгандан бери бекитилген маалыматтарды гана көрөт. Бир эле транзакциянын ичинде бир сапты кайра окуу бирдей маалыматтарды кайтарат. "Кызыл" жана кайталанбаган окууларды алдын алат. Фантомдорду кабыл алат.
// Repeatable Read мисалы // Транзакция 1 // BEGIN TRANSACTION; // SELECT COUNT(*) FROM users WHERE status = 'active'; // Мисалы, 100 // Транзакция 2 (бирге иштейт) // BEGIN TRANSACTION; // INSERT INTO users (name, status) VALUES ('Жаңы колдонуучу', 'active'); // COMMIT; // Транзакция 1 // SELECT COUNT(*) FROM users WHERE status = 'active'; // Дагы 100 (фантом) // COMMIT; -
Serializable: Эң жогорку деңгээл. Көптөгөн транзакциялар параллель иштөөдө, алардын аткарылышы белгилүү бир тартибинде иштегендей болот. "Кызыл" окууларды, кайталанбаган окууларды жана фантомдорду алдын алат. Блокировкалардын натыйжасында иштөө ылдамдыгы төмөндөйт.
Ар кандай маалымат базасы башкаруу системдеринде өзгөчөлүктөр жана кошумча деңгээлдер болушу мүмкүн. Мисалы, MySQL InnoDB боюнча, Repeatable Read стандарттык деңгээл болуп саналат.