Консервативная двухфазная синхронизация - Conservative two-phase locking


В Информатика, консервативная двухфазная синхронизация (C2PL) это метод блокировки, используемый в СУБД и реляционные базы данных.

Консервативный 2PL предотвращает тупиковые ситуации.

Разница между 2PL а C2PL заключается в том, что транзакции C2PL получают все необходимые блокировки до начала транзакции. Это сделано для того, чтобы транзакция, которая уже удерживает некоторые блокировки, не будет блокироваться в ожидании других блокировок.

В условиях сильной конкуренции блокировок C2PL сокращает среднее время удержания блокировок по сравнению с 2PL и строгим 2PL, поскольку транзакции, удерживающие блокировки, никогда не блокируются.

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

Кроме того, транзакция даже не получит никаких блокировок, если она не сможет получить все блокировки, необходимые для ее первоначального запроса. Более того, каждая транзакция должна декларировать свой набор для чтения и записи (элементы данных, которые будут считываться / записываться во время транзакции), что не всегда возможно. Из-за этих ограничений C2PL используется не очень часто.