Кіріспе

Ұялы транзакция – бұл қазірдің өзінде басталған транзакция шеңберіндегі нұсқау арқылы басталатын деректер базасы транзакциясы. Ұялы транзакциялар әртүрлі деректер базаларында әртүрлі жолдармен іске асырылады. Дегенмен, олардың ортақ ерекшелігі – өзгерістер сыртқы транзакция комиттенгенге дейін басқа байланыссыз транзакцияларға көрінбейді. Бұл ішкі транзакциядағы комит жүйедегі жаңартуларды міндетті түрде сақтамайды дегенді білдіреді. Кейбір деректер базаларында, ұялы транзакция жасалғанға дейін "аналық" транзакция ұялы транзакция арқылы енгізілген өзгерістерді көре алмайды. Кейбір пікірлерге сәйкес, бұл транзакциялардың оқшаулану қасиетінен туындайды. Ұялы транзакцияларды дұрыс өңдеу қабілеті – нағыз компоненттік қолданба архитектурасының алғышарты. Компоненттік инкапсуляцияланған архитектурада, ұялы транзакциялар бағдарламашы білмейтін жағдайда да пайда болуы мүмкін. Компоненттік функцияда деректер базасы транзакциясы болуы мүмкін немесе болмауы мүмкін (бұл компоненттің капсулаланған құпиясы. Ақпаратты жасыруға қараңыз). Егер мұндай компоненттік функцияға BEGIN COMMIT блогының ішінде шақыру жасалса, ұялы транзакциялар пайда болады. MySQL сияқты танымал деректер базалары BEGIN COMMIT блогын ұялатуға рұқсат бермейтіндіктен, оны басқару үшін фреймворк немесе транзакция мониторы қажет. Ұялы транзакциялар туралы сөйлескенде, бұл мүмкіндіктің деректерді басқару жүйесіне (DBMS) тәуелді екенін және барлық деректер базаларында қолжетімді емес екенін нақтылау қажет. Ұялы транзакциялар теориясы жазық транзакциялар теориясына ұқсас. Банктік сала әдетте ашық ұялы транзакцияларды қолдана отырып қаржылық операцияларды жүргізеді, бұл ұялы транзакция моделінің жеңілдетілген нұсқасы, ол жоғары өнімділікті қамтамасыз етеді, бірақ оның ілесінен келетін сәйкессіздіктерге келіседі.