Транзакции в бази от данни

Управление на транзакциите в база от данни. Понятие за транзакция. Елементи и заключвания. Проблеми в паралелното управление на база от данни. Модул за управление на разписания. Протоколи.

Транзакция – изпълнение на програма, като тя може да бъде заявка, написана на език за оперция с данни. Няколко независими изпълнения на една програма, могат да бъдат изпълнени едновременно или застъпвайки се като всяка от тях остава различна. Неделимост на транзакциите – изпълнението на няколко операции като едно цяло. Операциите или се изпълняват всички заедно и едновременно или не се изпълняват. Елементи – единици от данни до които се извършва достъп, които се характеризира с размерност. Тези с по-голяма размерност са грубо гранулирани а онези с по-малък – чисто гранулирани. Размерността се нарича гранулярност.
Отключване и заключване на елементи се осъществява чрез мениджъра на заключванията. Това е програма, която съхранява в себе си транзакция, типа на заключване и съответния екемент. Синтаксиса е: (<елемент> <тип на закл.><транзакция>)
Двете основни заключвания са:
А)Заключен запис – WLOCK- заключване при което докато се осъщ. модификация никой друг няма достъп- елемента е заключен. За да се осъществи достъп е нужно елемента да се отключи с команда UNLOCK. 
 Б)Заключено четене – процес при който се осъществява четене на данни. Отключването става с команда – UNLOCK, а заключването с RLOCK. Възможно е да се реализира отключен запис върху заключено четене защото заключен запис се ползва с по-виск приоритет. Не е възможно да се осъществи заключен запис върху заключено поле.

Проблеми за паралелно управление на БД

А)Безкрайно чакане-ако Транзакция 1 (Т1) заеме елемент А и го заключи, той ще е достъпен след неговото отключване. Ако се появи Транзакция 2 (Т2), тя ще има достъп след отключване на А. 
Решение- заявките се записват в една БД, след което елементите се предоставят, на транзакцията в зависимост от подадените заявки. 
А)Безизходно положение– ако Т1 изиска постъп до B, трябва да изчака B да се освободи. И ако T2 заяви достъп до A – се налага да изчака да се освободи А. 
Решение- осъществява се подреждане на елементите и удоволетворяване на това всички транзакции да изискват заключване в един и същ ред. Едно разписание е последователно ако всички стъпки на транзакцията се изпълняват последователно. 
Тези проблеми се решават от програма „модул за управление на разписанието”. Тя кара всички транзакции да чакат докато заключването, което поиска да осъществи е възможно. 

Протоколи – ограничение в последователността от неделими стъпки, които дадена транзакция може да изпълни. Протокол който изисква изключване на всички заявки, преди отключванията се нарича „Двуразово заключване”. 

Коментари: