Sobes.tech
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;