logo
Учебник ИСПиУ

Оптимистический подход

Основная идея оптимистических протоколов − максимизировать объем выполняемой работы. Эти протоколы дают шанс работать всем транзакциям, но разрешают благополучно завершиться только тем из них, чье завершение не влечет нарушения целостности базы.

С точки зрения менеджера управления транзакций при использовании оптимистического протокола выполнение транзакции делится на три концептуальные фазы: чтение, проверка, запись. В течение фазы чтения транзакция работает параллельно с другими транзакциями без каких-либо ограничений, но все измененные данные записываются в личную рабочую память транзакции, а не в базу. Когда транзакция завершает свою работу, менеджер инициирует фазу проверки транзакции на наличие конфликтов с другими транзакциями. Если проверка окончилась удачно (т.е. конфликтов не обнаружено), то сделанные транзакцией изменения переносятся в базу и становятся видимыми другим транзакциям. В противном случае, сама транзакция или конфликтующие с ней транзакции завершаются анормально (т.е. сделанные изменения забываются).

По типу проверки оптимистические протоколы делятся на «вперед смотрящие» (forward validation) [79] и «назад смотрящие» (backward validation) [79]. Различие состоит в выборе множества транзакций для проверки на наличие конфликтов при завершении транзакции Т0. Протоколы из первой группы используют в качестве такого множества − все еще не завершенные транзакции (и соответственно анормально завершают все те из них, которые конфликтуют с Т0 либо саму Т0). А «назад смотрящие» проводят проверку по отношению ко всем нормально завершившимся транзакциям и в случае конфликта анормально завершают только Т0.