Параллелдик транзакциялар аткарылганда кандай аномалиялар болушу мүмкүн?
sobes.tech AI
AIден жооп
Параллелдүү транзакциялардын аткарылышында төмөнкүдөй аномалиялар пайда болушу мүмкүн:
-
Жоголгон жаңыртуулар (Lost Update): Бир транзакция башка транзакциянын өзгөртүүлөрүн кайра жазат, алар бекитилгенге чейин.
Убакыт Транзакция 1 Транзакция 2 t1 Баланс маанисин окуйт (мисалы, 100) t2 Баланс маанисин окуйт (мисалы, 100) t3 Балансын 10го көбөйтөт (Баланс = 110) t4 Балансын 20го көбөйтөт (Баланс = 120) t5 Өзгөртүүлөрдү бекитет (Баланс 110 болот) t6 Өзгөртүүлөрдү бекитет (Баланс 120 болот) Жыйынтык: Эки көбөйтүүдөн кийин, акыркы Баланс 120, 130 эмес. Бир транзакциянын көбөйтүүсү жоголгон.
-
Кийинки окуу (Dirty Read): Бир транзакция башка транзакциянын бекитилбеген өзгөртүүлөрүн окуйт. Эгер өзгөртүүлөр кайтарылып алынса, окулган маалыматтар туура эмес болот.
Убакыт Транзакция 1 Транзакция 2 t1 Баланс өзгөртүүнү баштайт (100 -> 110) t2 Балансды окуйт (110 алат) t3 Өзгөртүүнү кайтарат (Баланс 100гө кайтарат) t4 Балансды 110 деп эсептейт, чындыкта 100 Жыйынтык: 2-чи транзакция маалыматтарды негизделген эмес.
-
Кайталагыс окуу (Non-Repeatable Read): Бир транзакцияда бир эле сапты кайра-кайра окуганда, ар бир окууда башка маанилер алынат, анткени башка транзакция ошол сапты өзгөртүп жатат.
Убакыт Транзакция 1 Транзакция 2 t1 Балансды окуйт (100 алат) t2 Балансды 110 кылып өзгөртүп, бекитет t3 Кайра окуйт (110 алат, 100 эмес) Жыйынтык: Баланс бир транзакциянын ичинде өзгөрдү, туура эмес натыйжаларга алып келиши мүмкүн.
-
Фантомдук окуу (Phantom Read): Бул да кайталагыс окууга окшош, бирок ал бар болгон саптардын өзгөрүшү эмес, жаңы саптардын кошулушу же жокко чыгарылышы менен байланыштуу, бул суроо жыйынтыктарына таасир этет.
Убакыт Транзакция 1 Транзакция 2 t1 SELECT COUNT(*) FROM Orders WHERE Status = 'Pending'деп суроо берет (5 алат)t2 'Pending' статусунда жаңы заказ кошот жана бекитет t3 кайра SELECT COUNT(*) FROM Orders WHERE Status = 'Pending'деп суроо берет (6 алат)Жыйынтык: Суроо кайра иштетилгенде, "фантомдук" саптар пайда болот, алгачкы окууда болбогон.
Бул аномалияларды алдын алуу үчүн, транзакциялардын ар кандай изоляция деңгээлдери колдонулат.