Junior
Деректер қорында транзакциялар не үшін қажет?
sobes.tech AI
AI-дан жауап
Дерекқордағы транзакциялар бірнеше операцияны біртұтас атомды әрекет ретінде сенімді және үйлесімді орындауды қамтамасыз етеді.
Негізгі мақсаттары:
- Атомдылық (Atomicity): Транзакциядағы барлық операциялар толық сәтті орындалуы немесе олардың ешқайсысы тұрақты әсер етпеуі керек (қайтару). Бұл деректердің тұтастығын қамтамасыз етеді.
- Сәйкестілік (Consistency): Транзакция дерекқорды бір сәйкестендірілген күйден басқа біреуге ауыстырады. Ол бар шектеулерді бұзбайды.
- Айырмашылық (Isolation): Бір уақытта орындалатын транзакциялар бір-бірінің аралық нәтижелерін көрмейді, бұл "лас оқылым", "қайталанбайтын оқылым" және "фантомды оқылым" сияқты мәселелерді болдырмайды.
- Тұрақтылық (Durability): Транзакция сәтті аяқталғаннан кейін енгізілген өзгерістер сақталады және жүйе ақау болған жағдайда да жоғалмайды.
Бұл операциялар барлық қадамдардың орындалуын кепілдендіру қажет болғанда пайдаланылады, мысалы, шоттар арасында ақша аударғанда.
Атомдылықтың мысалы:
-- Транзакцияны бастау
START TRANSACTION;
-- А шотынан қаражат алу
UPDATE accounts SET balance = balance - 100 WHERE id = account_A_id;
-- Б шотына қаражат салу
UPDATE accounts SET balance = balance + 100 WHERE id = account_B_id;
-- Транзакцияны бекіту (егер екі операция да сәтті болса)
COMMIT;
-- Немесе қайтару (егер кез келген операция сәтсіз болса)
-- ROLLBACK;