Sobes.tech
Junior

Kodėl duomenų bazėse naudojamos transakcijos?

sobes.tech AI

Atsakymas iš AI

Transakcijos užtikrina atomingumą, nuoseklumą, izoliaciją ir patvarumą (ACID) duomenų bazės operacijose.

  • Atomingumas: Visos operacijos transakcijoje arba visiškai įvykdomos, arba visai ne. Jei viena operacija nepavyksta, visos atšaukiamos.
  • Nuoseklumas: Transakcija perkelia duomenų bazę iš vieno nuoseklaus būsenos į kitą. Užkertamas kelias pažeidimams (pvz., unikalių raktų pažeidimams).
  • Izoliacija: Kiekviena transakcija vykdoma taip, tarsi ji būtų vienintelė sistemoje. Pakeitimai, atlikti viena transakcija, nėra matomi kitiems iki jos pabaigos.
  • Patvarumas: Sėkmingai užbaigus transakciją, jos pakeitimai įrašomi ir išlieka net ir sistemos gedimo atveju.

Transakcijos yra svarbios duomenų vientisumo užtikrinimui, ypač atliekant kelias susijusias operacijas, kurios turi būti vykdomos kartu arba visai ne. Pavyzdys — pinigų pervedimas iš taupomojo įmokos sąskaitos į einamąją.

-- Transakcijos pradžia
START TRANSACTION;

-- Nurašymas nuo pirmosios sąskaitos
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;

-- Jei ankstesnė operacija sėkminga, įrašymas į antrąją sąskaitą
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

-- Patikrinimas, ar abi operacijos sėkmingos ir be klaidų
-- IF klaida TADA
--   ROLLBACK; -- Visų pakeitimų atšaukimas
-- ELSE
--   COMMIT; -- Visų pakeitimų patvirtinimas
-- END IF;

-- Tarkime, kad abi komandos įvykdytos sėkmingai
COMMIT; -- Transakcijos patvirtinimas
-- ROLLBACK; -- Jei klaida, atšaukti transakciją