Summary

Šis dokumentas apžvelgia SQL transakcijas, izoliaciją ir su šių operacijų panaudojimu. Jame pateikiami pavyzdžiai ir užduotys, skirtos suprasti įvairius transakcijų aspektus.

Full Transcript

Transakcijos Transakcija Nedaloma operacijų visuma Arba viskas, arba nieko Pavyzdys (pinigų pervedimas): Pinigai nuskaitomi iš vienos sąskaitos Pinigai priskaičiuojami į kitą sąskaitą Kas įvyks, jei po pirmo veiksmo sistema užstrigs? Transakcijos DB pavyzdys Sąskaitų i...

Transakcijos Transakcija Nedaloma operacijų visuma Arba viskas, arba nieko Pavyzdys (pinigų pervedimas): Pinigai nuskaitomi iš vienos sąskaitos Pinigai priskaičiuojami į kitą sąskaitą Kas įvyks, jei po pirmo veiksmo sistema užstrigs? Transakcijos DB pavyzdys Sąskaitų informacija, laikoma banke: Transakcijos DB pavyzdys (2) Užklausos pinigų perlaidai: UPDATE Accounts SET Balance = Balance - 400 WHERE AccountNo = ‘LT9001’ ; UPDATE Accounts SET Balance = Balance + 400 WHERE AccountNo = ‘LT9003’; Kas įvyks, jei programa užstrigs po pirmosios užklausos? DB Sprendimas SET AUTOCOMMIT FALSE; UPDATE Accounts SET Balance = Balance - 400 WHERE AccountNo = ‘LT9001’ ; UPDATE Accounts SET Balance = Balance + 400 WHERE AccountNo = ‘LT9003’ ; COMMIT; SET AUTOCOMMIT TRUE; DB Sprendimas (2) SET AUTOCOMMIT FALSE - išjungiamas automatinis pakeitimų skelbimas po kiekvieno sakinio SET AUTOCOMMIT TRUE- įjungiamas automatinis pakeitimų skelbimas po kiekvieno sakinio COMMIT - paskelbiame pakeitimus ROLLBACK - atšaukiame visus transakcijos pakeitimus MySQL atveju: START TRANSACTION (BEGIN) - transakcijos pradžia Izoliacija Skirtingos DBVS palaiko skirtingus izoliacijos lygius Užtikrina duomenų izoliaciją daugelio vartotojų duomenų bazėse – Gali užtikrinti, kad nebaigtos transakcijos duomenys nebūtų matomi už transakcijos ribų – Gali užtikrinti, kad transakcija dirbs su konkrečiais iš išorės nekeičiamais duomenimis visą savo galiojimo laiką – Gali užtikrinti, kad viena transakcija negalės keisti duomenų, kuriuos keitė kita – Gali užtikrinti, kad viena transakcija negalės keisti duomenų, kuriuos skaitė kita –... Izoliacijos H2 Standartinis izoliacijos lygis “Read Committed” – Transakcijos duomenys matomi kitoms, tik po COMMIT – pasikartojantys duomenų nuskaitymai toje pačioje transakcijoje kinta Palaiko “Serializable” , "Repeateble Read", "Read Uncommitted" – Atitinkamai kinta kitų transakcijų rezultato matomumas Galima izoliaciją išjungti Užduotis Lentelėje Vykdytojai (vykdytojai DB): Išbandyti INSERT, UPDATE, DELETE sakinių transakcijų (ROLLBACK) veikimą Išbandyti ALTER TABLE sakinio transakcijų veikimą (pridėti naują stulpelį) Išbandyti DROP TABLE sakinio transakcijų veikimą SET AUTOCOMMIT FALSE; ROLLBACK; COMMIT; SET AUTOCOMMIT TRUE;

Use Quizgecko on...
Browser
Browser