СКЛ трансакција је низ једне или више СКЛ операција (нпр.INSERT UPDATE DELETE) изведена као јединствена јединица рада. Трансакције обезбеђују да или све операције буду успешне или да се ниједна не примењује уз одржавање интегритета података.
Кључна својства СКЛ трансакција: АЦИД
Интегритет СКЛ трансакција је регулисан АЦИД својствима која гарантују поуздане трансакције базе података. Ова четири својства раде заједно да гарантују да база података остаје доследна и поуздана.
- атомичност: Исход трансакције може бити или потпуно успешан или потпуно неуспешан. Цела трансакција мора бити враћена ако један њен део не успе.
- конзистентност: Трансакције одржавају ограничења интегритета премештањем базе података из једног важећег стања у друго.
- Изолација: Истовремене трансакције су изоловане једна од друге чиме се обезбеђује тачност података.
- Трајност: Када се трансакција изврши, њене модификације остају на снази чак и у случају квара система.
СКЛ команде за контролу трансакција
У СКЛ командама за контролу трансакција управљају извршавање СКЛ операција које обезбеђују интегритет и поузданост трансакција базе података. Ове команде помажу у управљању почетним урезивањем и враћањем измена у базу података. Испод су кључне команде за контролу трансакција у СКЛ-у објашњене са синтаксом и примерима за сваку.
1. Команда ЗАПОЧНИ ТРАНСАКЦИЈУ
ТхеBEGIN TRANSACTIONкоманда означава почетак нове трансакције. Сви СКЛ изрази који следе ову команду биће део исте трансакције до аCOMMIT или ROLLBACK се сусреће. Ова команда не прави никакве промене у бази података већ само покреће трансакцију.
Синтакса:
BEGIN TRANSACTION transaction_name ;Пример СКЛ трансакције са сценаријем банковног трансфера
Погледајмо пример банковног трансфера између два рачуна. Овај пример показује употребу више упита у једној трансакцији.
BEGIN TRANSACTION;
-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';
-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';
-- Commit the transaction if both operations succeed
COMMIT;
Ако дође до било какве грешке, као што је проблем саUPDATEупит који можете користитиROLLBACKда поништите све промене направљене током трансакције:
ROLLBACK;Ово осигурава да систем не заврши у неконзистентном стању као што је одбијање новца са једног рачуна без додавања на други.
BEGIN TRANSACTION TransferFunds;2. Команда ЦОММИТ
ТхеCOMMITкоманда се користи за чување свих промена направљених током тренутне трансакције у бази података. Када се трансакција изврши, промене су трајне.
Синтакса:
COMMIT;Пример
Ево узоркаStudentтабела која ће се користити за извођење операција у овом примеру. Ова табела садржи основне податке о ученику као што су старост ИД имена и друге релевантне информације којима ће се манипулисати коришћењем разних команде за контролу трансакција.
Студент ТаблеСледи пример који би обрисао оне записе из табеле који имају старост = 20, а затим ЦОММИТ промене у бази података.
DELETE FROM Student WHERE AGE = 20;
COMMIT;
Излаз
излаз3. Команда РОЛЛБАЦК
ТхеROLLBACKкоманда се користи за поништавање свих промена направљених у тренутној трансакцији. Користи се када дође до грешке или када се жељене промене не могу извршити. База података ће се вратити у стање у којем је била пре BEGIN TRANSACTION је погубљен.
Синтакса:
ROLLBACK;Пример
Избришите оне записе из табеле који имају старост = 20, а затим ОВЕРИТЕ измене у бази података. У овом случају, DELETE операција се поништава и промене у бази података се не чувају.
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
Излаз:
азбука са бројевима
излаз4. Команда САВЕПОИНТ
АSAVEPOINTсе користи за стварање а контролни пункт у оквиру трансакције. Можемо се вратити на одређеноSAVEPOINTуместо враћања целе трансакције уназад. Ово нам омогућава да поништимо део трансакције, а не целокупну трансакцију.
Синтакса:
SAVEPOINT SAVEPOINT_NAME;Пример
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
Излаз:
излазОбјашњење:
Из горњег примера Пример табеле 1 Избришите оне записе из табеле који имају старост = 20, а затим ВРАТИТЕ промене у бази података тако што ћете задржати Савепоинтс. Овде је СП1 прва САВЕПОИНТ креирана пре брисања. У овом примеру је извршено једно брисање. Након поновног брисања САВЕПОИНТ СП2 је креиран.
5. ВРАТИ СЕ НА ТАЧКУ САВЕ
ТхеROLLBACK TO SAVEPOINTкоманда нам омогућава да вратимо трансакцију на одређену тачку чувања ефективно поништавајући промене направљене након те тачке.
Синтакса:
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;Пример
Брисање је обављено, претпоставимо да смо се предомислили и одлучили да се вратимо на ТАЧКУ САВЕ коју смо идентификовали као СП1 која је пре брисања. Дакле, у овом случају,DELETEоперација се поништава и трансакција се враћа у стање у којем је била уSP1савепоинт.
ROLLBACK TO SP1;
//Rollback completed
Излаз:
излаз6. Команда РЕЛЕАСЕ САВЕПОИНТ
Ова команда се користи за уклањање САВЕПОИНТ-а који смо креирали. Када се САВЕПОИНТ ослободи, више не можемо да користимо РОЛЛБАЦК команда за поништавање трансакција извршених од последње САВЕПОИНТ. Користи се за покретање трансакције базе података и за спецификацију карактеристика трансакције која следи.
Синтакса:
RELEASE SAVEPOINT SAVEPOINT_NAME;Пример
Једном тачка чувањаSP2је пуштен, више не можемо да се вратимо на њега.
RELEASE SAVEPOINT SP2; -- Release the second savepoint.Зашто користити трансакције у банкарству?
У овом случају без трансакције ризикујете сценарије у којима се новац одузима са једног рачуна, али се не додаје на други, остављајући систем у недоследном стању. Трансакције обезбеђују да се такви проблеми избегну тако што гарантују да обе операције успеју или не успеју заједно.
Врсте СКЛ трансакција
Постоје различите врсте трансакција на основу њихове природе и специфичних операција које обављају:
- Прочитајте трансакције : Користи се само за читање података обично са
SELECTупити. - Врите Трансацтионс : Ово укључује модификацију података у бази података помоћу
INSERTUPDATEилиDELETEоперације. - Дистрибутед Трансацтионс : Ове трансакције обухватају више база података и обезбеђују доследност у њима.
- Имплицитне трансакције : Аутоматски покреће СКЛ Сервер за одређене операције.
- Експлицитне трансакције : Ручно контролисане трансакције где корисник почиње и завршава трансакцију помоћу
BEGIN TRANSACTIONCOMMITиROLLBACK.
Надгледање и оптимизација СКЛ трансакција
Да бисте одржали перформансе и спречили проблеме, размотрите следеће технике:
1. Закључавање монитора : Пратите понашање закључавања и прилагодите упите да бисте минимизирали сукобе закључавања.
2. Ограничите обим трансакције : Ограничите број редова или записа на које утиче трансакција да бисте убрзали обраду.
3. Користите групну обраду : Ако рукујете великим количинама података, разбијте операције на мање трансакције или групе да бисте избегли преоптерећење система.
Предложени квиз Уреди квиз 5 питањаКоји од следећих сценарија најбоље описује кршење својства 'Исолатион' у АЦИД-у?
- А
Трансакција оставља базу података у стању које крши ограничење примарног кључа.
- Б
Две трансакције које се извршавају истовремено читају и пишу исте податке што доводи до недоследних резултата.
- Ц
Корисник успешно ажурира запис, али пад система брише промену.
- Д
Трансакција не успе на пола пута и све њене промене се поништавају.
Ово је класичан пример кршења изолације где је средње стање једне трансакције видљиво другој.
У банкарској апликацији трансфер средстава укључује задуживање једног рачуна и кредитирање другог. Које својство АЦИД обезбеђује да се обе операције заврше или ниједна?
- А
Изолација
- Б
Атомицити
- Ц
Трајност
- Д
Доследност
Атомичност осигурава да су све операције у оквиру трансакције успешно завршене; у супротном се цела трансакција поништава.
Трансакција се извршава и издаје се 'ЦОММИТ'. Одмах након нестанка струје. Које својство АЦИД гарантује да су промене извршене трансакцијом и даље присутне након поновног покретања система?
- А
Доследност
- Б
Атомицити
- Ц
Трајност
- Д
Изолација
Трајност је својство које осигурава да ће, након што је трансакција извршена, остати таква чак и у случају нестанка струје или пада система.
Која је примарна сврха команде 'САВЕПОИНТ' у трансакцији?
- А
Да изврши део трансакције.
- Б
Да бисте означили тачку у трансакцији на коју касније можете да се вратите.
- Ц
Да бисте трајно сачували стање трансакције.
- Д
Да бисте прекинули трансакцију и учинили све промене трајним.
„САВЕПОИНТ“ омогућава делимично враћање унатраг унутар трансакције.
Размотрите следећу трансакцију: 'ПОКРЕНИ ТРАНСАКЦИЈУ; ИНСЕРТ ...; САВЕПОИНТ А; УПДАТЕ ...; САВЕПОИНТ Б; ДЕЛЕТЕ ...; ВРАТИ СЕ НА ТАЧКУ САЧУВАЊА А;' Какво је стање трансакције након команде 'РОЛЛБАЦК'?
низ инт
- А
Цела трансакција је поништена.
- Б
Само 'БРИШИ' је опозвано.
- Ц
Дошло је до грешке јер не можете да се вратите на тачку чувања која није најновија.
- Д
„ИНСЕРТ“ је сачуван, али „УПДАТЕ“ и „ДЕЛЕТЕ“ су поништени.
Враћање на „ТАЧКУ САЧУВАЊА А“ поништава све промене направљене после те тачке чувања, а то су „АЖУРИРАЈ“ и „ИЗБРИШИ“.
Квиз је успешно завршен Ваш резултат: 2/5тачност: 0%Пријавите се да бисте видели објашњење 1/5 1/5 < Previous Следећи >