КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Пример восстановления после сбоя.
Здесь только докат, отката нет, т.к. нет незавершенных транзакций. Перезапись «грязных» блоков ОСБ на диск производится в следующей последовательности:
Лекция 28 Обработка тупиковых ситуаций Предположим, что процедура «проводка» (см. предыдущую лекцию) реализована несколько по-другому:
Проводка (счёт1, счёт2, сумма) 2 оператора.
UPDATE … счёт1 Пример: UPDATE счёт SET остаток = остаток - сумма WHERE номер_счёта=счёт1; : UPDATE … счёт2 : COMMIT
Пусть к этой процедуре одновременно обращаются две рабочие станции WS1WS2 Проводка (100, 1001, 300) проводка (1001, 100, 150) процесс 1 процесс 2 UPDATE … 100 UPDATE … 1001 (соответствующая запись (запись с этим номером счёта блокируется до конца транзакции, также блокируется до COMMIT) т.е. до оператора COMMIT) : : UPDATE … 1001 UPDATE … 100 (ждёт разблокировки записи (процесс 2 приостанавливается и процессом 2) ожидает разблокировки со стороны процесса 1)
Возникает тупиковая ситуация. СУБД распознаёт такую ситуацию, и какой-либо процесс аварийно завершается. Соответствующая программа получит код возврата и должна выполнить одно из следующих действий:
|