Транза́кція (англ. transaction) — група послідовних операцій з базою даних, яка є логічною одиницею роботи з даними. Транзакція може бути виконана або цілком і успішно, дотримуючись цілісності даних і незалежно від інших транзакцій, що йдуть паралельно, або не виконана зовсім, і тоді вона не може справити ніякого ефекту. Транзакції оброблюються , в процесі роботи яких створюється . Транзакції з базою даних використовуються для досягнення наступних цілей:
- Забезпечення надійних робочих елементів, які дозволяють правильно відновити роботу у випадку збоїв та зберігати цілісність бази даних у випадку системних відмов, коли виконання операцій зупиняється (повністю або частково) і більшість операцій над базою даних залишаються незавершеними з нез'ясованим статусом.
- Для забезпечення роздільного доступу для процесів, що одночасно звертаються до бази даних. При відсутності ізоляції операцій результати, отримані процесами, можуть бути помилковими.
Розрізняють послідовні (звичайні), і розподілені транзакції. Розподілені транзакції вбачають використання більш ніж однієї транзакційної системи і потребують набагато більш складної логіки (наприклад, two-phase commit — ). Також, в деяких системах реалізовані , або під-транзакції, які є автономною частиною батьківської транзакції.
Приклад транзакції
Приклад: необхідно з банківського рахунку номер 5 на рахунок номер 7 суму в 10 грошових одиниць. Цього можна досягти, наприклад, наведеною послідовністю дій:
- Почати транзакцію: прочитати баланс на рахунку номер 5
- зменшити баланс на 10 грошових одиниць: зберегти новий баланс рахунку номер 5
- прочитати баланс на рахунку номер 7
- збільшити баланс на 10 грошових одиниць: зберегти новий баланс рахунку номер 7
- Закінчити транзакцію
Ці дії являють собою логічну одиницю роботи «переказ суми між рахунками», і, таким чином, є транзакцією. Якщо перервати дану транзакцію, наприклад, в середині, і не анулювати всі зміни, легко залишити власника рахунку номер 5 без 10 одиниць, тоді як власник рахунку номер 7 їх не отримає.
Властивості транзакцій
Одним з найбільш розповсюджених наборів вимог до транзакцій і транзакційних систем є набір ACID (англ. Atomicity, Consistency, Isolation, Durability). Вимоги ACID були в головному сформульовані наприкінці 70-х років Джимом Ґреєм. Разом з тим, існують спеціалізовані системи з ослабленими транзакційними властивостями.
Atomicity — Атомарність
Атомарність гарантує, що ніяка транзакція не буде зафіксована в системі частково. Будуть або виконані всі її складові операції, або не виконано жодної. Оскільки на практиці неможливо одночасно і атомарно виконати всю послідовність операцій усередині транзакції, вводиться поняття «відкат» (англ. rollback): якщо транзакцію не вдається повністю завершити, результати всіх її до сих пір виконаних дій будуть відмінені, і система повернеться до стану на початок транзакції.
Consistency — Узгодженість
Одна з найскладніших і неоднозначних властивостей з четвірки ACID. У відповідності до цієї вимоги, система знаходиться в узгодженому стані до початку транзакції і повинна залишитись в узгодженому стані після завершення транзакції. Не можна плутати вимогу узгодженості з вимогами цілісності (англ. integrity). Останні правила є більш вузькими і, багато в чому, специфічні для реляційних СКБД: є вимоги цілісності типів (англ. domain integrity), цілісності посилань (англ. referential integrity), цілісності сутностей (англ. entity integrity), які не можуть бути порушені фізично в силу особливостей реалізації системи.
Узгодженість є більш широким поняттям. Наприклад, в банківській системі може існувати вимога рівності суми, що списується з одного рахунку, сумі, що зачислюється на інший. Це бізнес-правило і воно не може бути гарантовано тільки перевірками цілісності, його повинні дотриматись програмісти при написанні коду транзакцій. Якщо будь-яка транзакція виконає списання, але не виконає зачислення, то система залишиться в некоректному стані і властивість узгодженості буде порушена.
Нарешті, ще одне зауваження стосується того, що під час виконання транзакції узгодженість не потребується. В нашому прикладі, списання і зачислення будуть, скоріш за все, двома різними підопераціями і між їх виконанням всередині транзакції буде видно неузгоджений стан системи. Однак не треба забувати, що при виконанні вимоги ізоляції, жодним іншим транзакціям ця неузгодженість не буде видна. А атомарність гарантує, що транзакція або буде повністю завершена, або жодна з операцій транзакції не буде виконана. Тим самим ця проміжна неузгодженість є прихованою.
Isolation — Ізольованість
Під час виконання певної транзакції, транзакції, які відбуваються паралельно, не повинні впливати на її результат. Ця властивість не дотримується на рівні ізольованості Repeatable Read та нижче.
Durability — Надійність
Незалежно від проблем на нижніх рівнях (наприклад, при знеструмленні системи чи збоях в обладнанні), зміни, зроблені транзакцією, яка успішно завершена, повинні залишитись збереженими після повернення системи до роботи. Іншими словами, якщо користувач отримав підтвердження від системи, що транзакція виконана, він може бути впевнений, що зміни, які він зробив, не будуть відмінені через будь-який збій.
Рівні ізоляції транзакцій
В ідеалі транзакції різних користувачів повинні виконуватись так, щоб створювалась ілюзія, що користувач поточної транзакції — єдиний. Однак в реальності, з міркувань продуктивності і для виконания деяких спеціальних задач, СКБД забезпечують певні рівні ізоляції транзакцій.
Рівні є описаними в порядку збільшення ізольованості транзакцій і, відповідно, надійності роботи з даними.
- 0 — Читання непідтверджених даних (брудне читання) (Read Uncommitted, Dirty Read) — читання незафіксованих змін як своєї транзакції, так і паралельних транзакцій. Немає гарантії, що дані, змінені іншими транзакціями, не будуть в будь-який момент змінені в результаті їх відката, тому таке читання є потенційним джерелом помилок. Неможливими є втрачені зміни (lost changes), можливими є неповторювані читання і фантоми.
- 1 — Читання підтверджених даних (Read Committed) — читання всіх змін своєї транзакції і зафіксованих змін паралельних транзакцій. Втрачені зміни і брудне читання не дозволяються, можливими є неповторюване читання і фантоми.
- 2 — Повторюване читання (Repeatable Read, Snapshot) — читання всіх змін своєї транзакції, будь-які зміни, внесені паралельними транзакціями після початку своєї, є недоступними. Втрачені зміни, брудне і неповторюване читання не є можливими; можливі фантоми.
- 3 — Впорядкований — (Serializable) — транзакції. Результат паралельного виконання впорядкованої транзакції з іншими транзакціями повинен бути логічно еквівалентний результату їх будь-якого послідовного виконання. Проблеми синхронізації не виникають.
Чим вище рівень ізоляції, тим більше потребується ресурсів, щоб його забезпечити. Відповідно, підвищення ізольованості може приводити до зниження швидкості виконання паралельних транзакцій, що є «платою» за підвищення надійності.
В СКБД рівень ізоляції транзакцій можна вибрати як для всіх транзакцій разом, так і для одної конкретної транзакції. За умовчанням в більшості баз даних використовується рівень 1 (Read Committed). Рівень 0 використовується в основному для відстеження змін тривалих транзакцій або для читання даних, що рідко змінюються. Рівні 2 и 3 використовуються при підвищених вимогах до ізольованості транзакцій.
Реалізація
Повноцінна реалізація рівнів ізоляції і властивостей ACID є нетривіальною задачею. Обробка вхідних даних призводить до великої кількості маленьких змін, включаючи оновлення як самих таблиць, так і індексів. Ці зміни потенційно можуть зазнати поразку: закінчилось місце на диску, операція займає забагато часу (timeout) і т. д. Система повинна у випадку невдачі коректно повернути базу даних у стан до транзакції.
Перші комерційні СКБД (наприклад, IBM DB2), скористались виключно блокуванням доступу до даних для забезпечення властивостей ACID. Але велика кількість блокувань призводить до суттєвого зменшення продуктивності. Є два популярних сімейства рішень цієї проблеми, які знижують кількість блокувань:
- (write ahead logging, WAL)
- (shadow paging).
В обох випадках, блокування повинні бути розставлені на всю інформацію, яка оновлюється. В залежності від рівня ізоляції і імплементації, блокування записів також розставляються на інформацію, яка була прочитана транзакцією.
При упереджуючій журнализації, яка використовується в Sybase і MS SQL Server до версії 2005, всі зміни записуються до журналу, і тільки після успішного завершення — до бази даних. Це дозволяє СКБД повернутись до робочого стану після неочікуваного падіння системи. Тіньові сторінки містять копії тих сторінок бази даних на початок транзакції, в яких трапляються зміни. Ці копії активуються після успішного завершення. Хоча тіньові сторінки легше реалізуються, упереджуюча журналізація більш ефективна
Подальший розвиток технологій керування базами даних привів до появи безблоковних технологій. Ідея контроля за паралельним доступом з допомогою часових міток (timestamp-based concurrency control) була розвинена і привела до появи багатоверсійної архітектури MVCC. Ці технології не потребують ні журнализації змін, аніж тіньових сторінок. Архітектура, що реалізована в Oracle 7.х і вище, записує старі версії сторінок в спеціальний сегмент відкату, але вони все ще доступні для читання. Якщо транзакція при читанні попадає на сторінку, часова мітка якої новіше за початок читання, дані беруться з сегменту відката (тобто використовується «стара» версія). Для підтримки такої роботи ведеться журнал транзакцій, але на відміну від «упереджуючої журналізації», він не містить даних. Робота з ним складається з трьох логічних кроків:
- Записати намір провести деякі операції
- Виконати завдання, копіюючи оригінали сторінок, що змінюються, до сегменту відката
- Записати, що все зроблено без помилок
Журнал транзакцій в комбінації з сегментом відката (область, в якій зберігається копія всіх даних, що змінюються в ході транзакції) гарантує цілісність даних. У випадку збою запускається процедура відновлення, яка перевіряє окремі його записи наступним чином:
- Якщо запис є пошкодженим, то збій трапився під час проставлення відмітки в журналі. Значить, нічого важливого не загубилось, ігноруємо цю помилку.
- Якщо всі записи помічені як успішно виконані, то збій трапився між транзакціями, тут також немає втрат.
- Якщо в журналі є незакінчена транзакція, то збій трапився під час запису на диск. У цьому випадку ми відновлюємо стару версію даних з сегменту відката.
Firebird взагалі не має ані журналу змін, ані сегменту відката, а реалізує MVCC, записуючи нові версії рядків таблиць прямо до активного простору даних. Так само робить і MS SQL 2005. Теоретично це дає максимальну ефективность при паралельній роботі з даними, але ціною є необхідність «збирання сміття», тобто видалення старих і вже не потрібних версій даних.
Див. також
У Вікісловнику є сторінка транзакція. |
Примітки
- Gray, Jim. The Transaction Concept: Virtues and Limitations. Proceedings of the 7th International Conference on Very Large Databases: pages 144—154, 1981(англ.)
- Advanced Transaction Models and Architectures [ 2009-01-06 у Wayback Machine.](англ.)
- . Архів оригіналу за 20 вересня 2008. Процитовано 6 травня 2014.
- Gray, J., McJones, P., Blasgen, M., Lindsay, B., Lorie, R., Price, T., Putzolu, F., and Traiger, I. The recovery manager of the System R database manager. ACM Comput. Surv. 13, 2 (June 1981).
Це незавершена стаття про бази даних. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina Tranzakciya Tranza kciya angl transaction grupa poslidovnih operacij z bazoyu danih yaka ye logichnoyu odiniceyu roboti z danimi Tranzakciya mozhe buti vikonana abo cilkom i uspishno dotrimuyuchis cilisnosti danih i nezalezhno vid inshih tranzakcij sho jdut paralelno abo ne vikonana zovsim i todi vona ne mozhe spraviti niyakogo efektu Tranzakciyi obroblyuyutsya v procesi roboti yakih stvoryuyetsya Tranzakciyi z bazoyu danih vikoristovuyutsya dlya dosyagnennya nastupnih cilej Zabezpechennya nadijnih robochih elementiv yaki dozvolyayut pravilno vidnoviti robotu u vipadku zboyiv ta zberigati cilisnist bazi danih u vipadku sistemnih vidmov koli vikonannya operacij zupinyayetsya povnistyu abo chastkovo i bilshist operacij nad bazoyu danih zalishayutsya nezavershenimi z nez yasovanim statusom Dlya zabezpechennya rozdilnogo dostupu dlya procesiv sho odnochasno zvertayutsya do bazi danih Pri vidsutnosti izolyaciyi operacij rezultati otrimani procesami mozhut buti pomilkovimi Rozriznyayut poslidovni zvichajni i rozpodileni tranzakciyi Rozpodileni tranzakciyi vbachayut vikoristannya bilsh nizh odniyeyi tranzakcijnoyi sistemi i potrebuyut nabagato bilsh skladnoyi logiki napriklad two phase commit Takozh v deyakih sistemah realizovani abo pid tranzakciyi yaki ye avtonomnoyu chastinoyu batkivskoyi tranzakciyi Priklad tranzakciyiPriklad neobhidno z bankivskogo rahunku nomer 5 na rahunok nomer 7 sumu v 10 groshovih odinic Cogo mozhna dosyagti napriklad navedenoyu poslidovnistyu dij Pochati tranzakciyu prochitati balans na rahunku nomer 5 zmenshiti balans na 10 groshovih odinic zberegti novij balans rahunku nomer 5 prochitati balans na rahunku nomer 7 zbilshiti balans na 10 groshovih odinic zberegti novij balans rahunku nomer 7 Zakinchiti tranzakciyu Ci diyi yavlyayut soboyu logichnu odinicyu roboti perekaz sumi mizh rahunkami i takim chinom ye tranzakciyeyu Yaksho perervati danu tranzakciyu napriklad v seredini i ne anulyuvati vsi zmini legko zalishiti vlasnika rahunku nomer 5 bez 10 odinic todi yak vlasnik rahunku nomer 7 yih ne otrimaye Vlastivosti tranzakcijOdnim z najbilsh rozpovsyudzhenih naboriv vimog do tranzakcij i tranzakcijnih sistem ye nabir ACID angl Atomicity Consistency Isolation Durability Vimogi ACID buli v golovnomu sformulovani naprikinci 70 h rokiv Dzhimom Greyem Razom z tim isnuyut specializovani sistemi z oslablenimi tranzakcijnimi vlastivostyami Atomicity Atomarnist Dokladnishe Atomarnist Atomarnist garantuye sho niyaka tranzakciya ne bude zafiksovana v sistemi chastkovo Budut abo vikonani vsi yiyi skladovi operaciyi abo ne vikonano zhodnoyi Oskilki na praktici nemozhlivo odnochasno i atomarno vikonati vsyu poslidovnist operacij useredini tranzakciyi vvoditsya ponyattya vidkat angl rollback yaksho tranzakciyu ne vdayetsya povnistyu zavershiti rezultati vsih yiyi do sih pir vikonanih dij budut vidmineni i sistema povernetsya do stanu na pochatok tranzakciyi Consistency Uzgodzhenist Dokladnishe Uzgodzhenist danih Odna z najskladnishih i neodnoznachnih vlastivostej z chetvirki ACID U vidpovidnosti do ciyeyi vimogi sistema znahoditsya v uzgodzhenomu stani do pochatku tranzakciyi i povinna zalishitis v uzgodzhenomu stani pislya zavershennya tranzakciyi Ne mozhna plutati vimogu uzgodzhenosti z vimogami cilisnosti angl integrity Ostanni pravila ye bilsh vuzkimi i bagato v chomu specifichni dlya relyacijnih SKBD ye vimogi cilisnosti tipiv angl domain integrity cilisnosti posilan angl referential integrity cilisnosti sutnostej angl entity integrity yaki ne mozhut buti porusheni fizichno v silu osoblivostej realizaciyi sistemi Uzgodzhenist ye bilsh shirokim ponyattyam Napriklad v bankivskij sistemi mozhe isnuvati vimoga rivnosti sumi sho spisuyetsya z odnogo rahunku sumi sho zachislyuyetsya na inshij Ce biznes pravilo i vono ne mozhe buti garantovano tilki perevirkami cilisnosti jogo povinni dotrimatis programisti pri napisanni kodu tranzakcij Yaksho bud yaka tranzakciya vikonaye spisannya ale ne vikonaye zachislennya to sistema zalishitsya v nekorektnomu stani i vlastivist uzgodzhenosti bude porushena Nareshti she odne zauvazhennya stosuyetsya togo sho pid chas vikonannya tranzakciyi uzgodzhenist ne potrebuyetsya V nashomu prikladi spisannya i zachislennya budut skorish za vse dvoma riznimi pidoperaciyami i mizh yih vikonannyam vseredini tranzakciyi bude vidno neuzgodzhenij stan sistemi Odnak ne treba zabuvati sho pri vikonanni vimogi izolyaciyi zhodnim inshim tranzakciyam cya neuzgodzhenist ne bude vidna A atomarnist garantuye sho tranzakciya abo bude povnistyu zavershena abo zhodna z operacij tranzakciyi ne bude vikonana Tim samim cya promizhna neuzgodzhenist ye prihovanoyu Isolation Izolovanist Pid chas vikonannya pevnoyi tranzakciyi tranzakciyi yaki vidbuvayutsya paralelno ne povinni vplivati na yiyi rezultat Cya vlastivist ne dotrimuyetsya na rivni izolovanosti Repeatable Read ta nizhche Durability Nadijnist Nezalezhno vid problem na nizhnih rivnyah napriklad pri znestrumlenni sistemi chi zboyah v obladnanni zmini zrobleni tranzakciyeyu yaka uspishno zavershena povinni zalishitis zberezhenimi pislya povernennya sistemi do roboti Inshimi slovami yaksho koristuvach otrimav pidtverdzhennya vid sistemi sho tranzakciya vikonana vin mozhe buti vpevnenij sho zmini yaki vin zrobiv ne budut vidmineni cherez bud yakij zbij Rivni izolyaciyi tranzakcijDokladnishe Rivni izolovanosti tranzakcij V ideali tranzakciyi riznih koristuvachiv povinni vikonuvatis tak shob stvoryuvalas ilyuziya sho koristuvach potochnoyi tranzakciyi yedinij Odnak v realnosti z mirkuvan produktivnosti i dlya vikonaniya deyakih specialnih zadach SKBD zabezpechuyut pevni rivni izolyaciyi tranzakcij Rivni ye opisanimi v poryadku zbilshennya izolovanosti tranzakcij i vidpovidno nadijnosti roboti z danimi 0 Chitannya nepidtverdzhenih danih brudne chitannya Read Uncommitted Dirty Read chitannya nezafiksovanih zmin yak svoyeyi tranzakciyi tak i paralelnih tranzakcij Nemaye garantiyi sho dani zmineni inshimi tranzakciyami ne budut v bud yakij moment zmineni v rezultati yih vidkata tomu take chitannya ye potencijnim dzherelom pomilok Nemozhlivimi ye vtracheni zmini lost changes mozhlivimi ye nepovtoryuvani chitannya i fantomi 1 Chitannya pidtverdzhenih danih Read Committed chitannya vsih zmin svoyeyi tranzakciyi i zafiksovanih zmin paralelnih tranzakcij Vtracheni zmini i brudne chitannya ne dozvolyayutsya mozhlivimi ye nepovtoryuvane chitannya i fantomi 2 Povtoryuvane chitannya Repeatable Read Snapshot chitannya vsih zmin svoyeyi tranzakciyi bud yaki zmini vneseni paralelnimi tranzakciyami pislya pochatku svoyeyi ye nedostupnimi Vtracheni zmini brudne i nepovtoryuvane chitannya ne ye mozhlivimi mozhlivi fantomi 3 Vporyadkovanij Serializable tranzakciyi Rezultat paralelnogo vikonannya vporyadkovanoyi tranzakciyi z inshimi tranzakciyami povinen buti logichno ekvivalentnij rezultatu yih bud yakogo poslidovnogo vikonannya Problemi sinhronizaciyi ne vinikayut Chim vishe riven izolyaciyi tim bilshe potrebuyetsya resursiv shob jogo zabezpechiti Vidpovidno pidvishennya izolovanosti mozhe privoditi do znizhennya shvidkosti vikonannya paralelnih tranzakcij sho ye platoyu za pidvishennya nadijnosti V SKBD riven izolyaciyi tranzakcij mozhna vibrati yak dlya vsih tranzakcij razom tak i dlya odnoyi konkretnoyi tranzakciyi Za umovchannyam v bilshosti baz danih vikoristovuyetsya riven 1 Read Committed Riven 0 vikoristovuyetsya v osnovnomu dlya vidstezhennya zmin trivalih tranzakcij abo dlya chitannya danih sho ridko zminyuyutsya Rivni 2 i 3 vikoristovuyutsya pri pidvishenih vimogah do izolovanosti tranzakcij RealizaciyaPovnocinna realizaciya rivniv izolyaciyi i vlastivostej ACID ye netrivialnoyu zadacheyu Obrobka vhidnih danih prizvodit do velikoyi kilkosti malenkih zmin vklyuchayuchi onovlennya yak samih tablic tak i indeksiv Ci zmini potencijno mozhut zaznati porazku zakinchilos misce na disku operaciya zajmaye zabagato chasu timeout i t d Sistema povinna u vipadku nevdachi korektno povernuti bazu danih u stan do tranzakciyi Pershi komercijni SKBD napriklad IBM DB2 skoristalis viklyuchno blokuvannyam dostupu do danih dlya zabezpechennya vlastivostej ACID Ale velika kilkist blokuvan prizvodit do suttyevogo zmenshennya produktivnosti Ye dva populyarnih simejstva rishen ciyeyi problemi yaki znizhuyut kilkist blokuvan write ahead logging WAL shadow paging V oboh vipadkah blokuvannya povinni buti rozstavleni na vsyu informaciyu yaka onovlyuyetsya V zalezhnosti vid rivnya izolyaciyi i implementaciyi blokuvannya zapisiv takozh rozstavlyayutsya na informaciyu yaka bula prochitana tranzakciyeyu Pri uperedzhuyuchij zhurnalizaciyi yaka vikoristovuyetsya v Sybase i MS SQL Server do versiyi 2005 vsi zmini zapisuyutsya do zhurnalu i tilki pislya uspishnogo zavershennya do bazi danih Ce dozvolyaye SKBD povernutis do robochogo stanu pislya neochikuvanogo padinnya sistemi Tinovi storinki mistyat kopiyi tih storinok bazi danih na pochatok tranzakciyi v yakih traplyayutsya zmini Ci kopiyi aktivuyutsya pislya uspishnogo zavershennya Hocha tinovi storinki legshe realizuyutsya uperedzhuyucha zhurnalizaciya bilsh efektivna Podalshij rozvitok tehnologij keruvannya bazami danih priviv do poyavi bezblokovnih tehnologij Ideya kontrolya za paralelnim dostupom z dopomogoyu chasovih mitok timestamp based concurrency control bula rozvinena i privela do poyavi bagatoversijnoyi arhitekturi MVCC Ci tehnologiyi ne potrebuyut ni zhurnalizaciyi zmin anizh tinovih storinok Arhitektura sho realizovana v Oracle 7 h i vishe zapisuye stari versiyi storinok v specialnij segment vidkatu ale voni vse she dostupni dlya chitannya Yaksho tranzakciya pri chitanni popadaye na storinku chasova mitka yakoyi novishe za pochatok chitannya dani berutsya z segmentu vidkata tobto vikoristovuyetsya stara versiya Dlya pidtrimki takoyi roboti vedetsya zhurnal tranzakcij ale na vidminu vid uperedzhuyuchoyi zhurnalizaciyi vin ne mistit danih Robota z nim skladayetsya z troh logichnih krokiv Zapisati namir provesti deyaki operaciyi Vikonati zavdannya kopiyuyuchi originali storinok sho zminyuyutsya do segmentu vidkata Zapisati sho vse zrobleno bez pomilok Zhurnal tranzakcij v kombinaciyi z segmentom vidkata oblast v yakij zberigayetsya kopiya vsih danih sho zminyuyutsya v hodi tranzakciyi garantuye cilisnist danih U vipadku zboyu zapuskayetsya procedura vidnovlennya yaka pereviryaye okremi jogo zapisi nastupnim chinom Yaksho zapis ye poshkodzhenim to zbij trapivsya pid chas prostavlennya vidmitki v zhurnali Znachit nichogo vazhlivogo ne zagubilos ignoruyemo cyu pomilku Yaksho vsi zapisi pomicheni yak uspishno vikonani to zbij trapivsya mizh tranzakciyami tut takozh nemaye vtrat Yaksho v zhurnali ye nezakinchena tranzakciya to zbij trapivsya pid chas zapisu na disk U comu vipadku mi vidnovlyuyemo staru versiyu danih z segmentu vidkata Firebird vzagali ne maye ani zhurnalu zmin ani segmentu vidkata a realizuye MVCC zapisuyuchi novi versiyi ryadkiv tablic pryamo do aktivnogo prostoru danih Tak samo robit i MS SQL 2005 Teoretichno ce daye maksimalnu efektivnost pri paralelnij roboti z danimi ale cinoyu ye neobhidnist zbirannya smittya tobto vidalennya starih i vzhe ne potribnih versij danih Div takozhU Vikislovniku ye storinka tranzakciya Rivni izolovanosti tranzakcij ACID Programna tranzakcijna pam yat MVCCPrimitkiGray Jim The Transaction Concept Virtues and Limitations Proceedings of the 7th International Conference on Very Large Databases pages 144 154 1981 angl Advanced Transaction Models and Architectures 2009 01 06 u Wayback Machine angl Arhiv originalu za 20 veresnya 2008 Procitovano 6 travnya 2014 Gray J McJones P Blasgen M Lindsay B Lorie R Price T Putzolu F and Traiger I The recovery manager of the System R database manager ACM Comput Surv 13 2 June 1981 Ce nezavershena stattya pro bazi danih Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi