Тъй като сделката се изпълнява
Базата данни има специална зона за данни, който се нарича Съвет (транзакция Инвентаризация Page страница -Inventarnaya транзакция). В началото на сделката, те се причисляват идентификатор (три пъти дневно, Идентификационен номер на транзакцията) - инвентарен номер, който се съхранява в бакшиш. В този случай, в последния сделката ще бъде най-голямата идентификатор. Върхът, в допълнение към номерата за започване на операция се записва и нейното състояние, което може да бъде активен (в работата), Ангажиран (потвърдено), отвали (Отменен, намаление на цените), и в състояние на неопределеност (Несигурно).
Тя е наречена активна сделката, която се изпълнява в момента.
Потвърдено сделката се нарича, който е завършил успешно своята работа, като правило, по команда Ангажиране.
Отменен сделка обаждане, че не успя. В същото време се връщам действия, извършени от нея, като правило, екип RollBack.
Неопределен транзакция (Limbo) на транзакция, която работи едновременно с две или повече бази данни. След приключване на тази сделка, потвърждение на InterBase изпълнява двуфазов комит, като се гарантира, че всички промени ще бъдат направени във всички бази данни или в който и да е. В този случай потвърждаване на бази данни, ще бъде даден в даден момент. Ако в този момент има провал система, тя може да се окаже, че са направени промени в публичните бази данни, както и в това, което не е така. В този случай, сделката влиза неопределен състояние, когато сървърът не знам дали да потвърди сделката, или се връщам.
Всяка работа сделка като се започне, създава своя собствена версия на записите в таблицата, която работи. запис на версия - е копие на запис, който се създава, когато сделката се опитва да го промените. По този начин, всеки запис в таблицата, може потенциално да има няколко версии, всяка със собствен сделка работен вариант на този запис. Ако сделката се променя данните, тя се променя своя собствена версия на записа, а не в оригинал. Освен това, сделката може или да потвърди или отмени.
Ако сделката бъде потвърдена, предишната марка на InterBase опитайте оригиналния запис се изтрива, а версията на сключената сделка - като оригинала. Когато InterBase записва промените, новия запис се поставя и идентификационен номер на транзакцията, която е направила тези промени (всеки ред на таблицата съдържа идентификационния номер на транзакцията, че го е създал).
Ако сделката е неуспешна, на оригиналния запис и оригиналните останки.
Ако сделката се чете само на запис, без да се опитва да го промени, той не създава своя собствена версия за нея.
Въпреки това, може да има конфликти и сделки. Да предположим, че започна Т1 сделка. Тя е създала версия на записа, и да се промени своите данни. По това време, той започна състезава T2 сделка, и е създал версия на същия запис. Тъй като T1 още не е приключило, T2 не можеше да види данните в началото на промените, направени от T1 и следователно, създава своя версия на стария оригинала. T1 сега се финализира ангажират. Какво трябва да направи InterBase? Ако това ще отбележи T1 версия на записа като оригинала, но старият рекорд е изтрита, тя ще бъде на неверни данни в T2 версия! InterBase действия в този случай ще зависи от параметрите на сделката, тъй като ще бъдат обсъдени по-долу по-подробно.
Ако сделка премахва някои низ, низа не е физически премахнат от базата данни, а по-скоро е маркирано като изтрит, съхраняване и редица отстранени сделка нея. Ако сделката се провали, премахване на реалната линия не се случва, тъй като не е имало потвърждение.
По този начин, се казва, че мулти-версия InterBase архитектура (MGA - Multi Generation Architecture). Тази архитектура позволява да се организира работата с базата данни, така че потребителите да не блокират читатели, които пишат. В допълнение, в случай на отказ на системата, на InterBase бързо възстановяване, благодарение точно до MGA. Между другото, това е първият от InterBase SQL-сървър, който поддържа мулти-версия архитектура.
Наред с предимствата на този подход, в базата данни с данните, времето се натрупва "боклуци". Всяка сделка, която се опитва да актуализира данните, създава своя собствена версия на линиите, и ако не се грижи за своевременното отстраняване на стари, вече безполезни версии на базата данни скоро ще бъде просто запушени отломки.
Но как да се отстранят боклука? Мога ли да премахна версията на сделката, която е завършена, успешно или неуспешно? Не, ако тази версия в момента се използва от други сделки. По-късно ще говорим за нивата на транзакциите изолация, а само да кажа, че някои операции могат да се видят промените, направени от други, все още не са потвърдени от активни операции.
Да предположим, че започна Tl сделка. Тази транзакция създаде версия на записа и да го модифицирате. По-късно започнах сделка Т2, която е създадена, така че можете да видите всички промени, дори и да не потвърди. Тя апелира към един и същи запис, и тъй като тя иска да види последните промени, тя осигурява версия Tl сделка. Тогава Tl приключи работата си, но T2 все още работи с версия на записа, затова тази версия не може да бъде изтрита.
В момента InterBase механизъм за премахване на старите версии, а именно новите сделки. Нова сделка, като изиска запис, чете всички версии на този запис. В този случай, се прави проверка за това дали сделката е да се направи тази версия на анулиране (намаление на цените) или потвърдени (комит). Ако сделката е била отменена, така че тази версия - отломки, които трябва да бъдат отстранени. Ако има няколко версии, да направи сделка потвърждение, датата счита за версията с най-голям номер на транзакцията. Други версии се считат остарели и също подлежат на премахване.
По този начин, млад транзакция почисти базата данни на отломки, оставена от по-стари сделки. Но те не почистват версия всички стари в един ред, но само версията на записа (или записи), за които се разгледа себе си.
Тъй като сървърът може да бъде едновременно извършва множество сделки има определение терминология от тези сделки.
• Активно сделка - сделка, която е започнал, но все още не е завършена.
• сделка със заинтересовани лица - сделка, се конкурира с текущата сделката.
• Най-старият активен сделката - това е такава активна транзакция, която започна по-рано от другите. Както и да е, това е активна транзакция на най-ниското ID.
• Най-старият съответната сделка - тя е такава интересуват сделка, която започна преди другите. Както и да е, той се занимава с най-ниската идентификатор сделка.
В този контекст, събиране на боклука е най-старият действащ сделката. От запис версии, направени от по-млади сделка, тя не може да види, а след това го премахва отломките, оставени от други по-големи сделки. Когато сделката приключи своята работа, статут на "най-старият действащ" се измества на следващата сделката. По този начин, сделката се предава един на друг дълг на събиране на боклука.