Управление параллелизмом с низкими накладными расходами


Блокирование


Простейшая схема управления многораздельными транзакциями состоит в том, что до завершения активных транзакций прием на обработку других транзакций блокируется. Когда процесс некоторого раздела получает первый фрагмент некоторой многораздельной транзакции, он выполняет его и возвращает результаты. Все другие транзакции ставятся в очередь. При получении последующих фрагментов активной транзакции процесс обрабатывает их по порядку. После того как данная транзакция фиксируется или откатывается, обрабатываются транзакции, ранее поставленные в очередь. По сути, система предполагает, что все транзакции конфликтуют, и поэтому их можно выполнять только по одной. На рис. 2 показан псевдокод, соответствующий этому подходу.

Transaction Fragment Arrives if no active transactions: if single partition: execute fragment without undo buffer commit else: execute fragment with undo buffer else if fragment continues active multi-partition transaction: continue transaction with fragment else: queue fragment

Commit/Abort Decision Arrives if abort: undo aborted transaction execute queued transactions

Рис. 2. Псевдокод блокирования




Начало  Назад  Вперед



Книжный магазин