Dmitry.Karpov http://prof Гость
|
Добавлено: Чт Апр 03 2003 19:19 Заголовок сообщения: Транзакция - это набо элементарных операций, который д.б. доведен до конца или возвращен в исходное состояние, как будто ничего |
|
|
Рассмотрим ситуацию с перечислением некой суммы денег с одного банковскогосчета на другой. В компьютере это делается так: - прочитать содержимое первого счета; - вычесть из него сумму; - записать новое значение счета; - прочитать содержимое второго счета; - прибавить к нему сумму; - записать новое значение счета. 1) Что произойдет в случае выключения питания? 2) Что произойдет, если в момент между первой и третьей операцией (они происходят не одномоментно) кто-то захочет изменить содержимое первого счета?
Чтобы этого не случилось, операцию проводят в несколько этапов: - Все используемые в транзакции данные помечаются как заблокированные. Если кто-то уже заблокировал их - ждем, когда разблокируются. - Составляем задание, куда чего надо записать (т.е. вычисляем новые значения, но записываем их в другое место). - После того, как задание записано на жеский диск, пишет признак того, что оно окончательно сформировано. - Выполняем транзакцию, т.е. записываем новые значения. - Разблокируем записи. 1) Если свет выключили до того, как признак завешенности задания был записан, транзакция срывается (не выполняется). Если же после, то транзакция доводится до конца. 2) В заблокированные записи никто не лазает. |
|