Консервативная двухфазная блокировка
В информатике СУБД консервативная двухфазная блокировка (C2PL) — метод блокировки, используемый в и реляционных базах данных .
Консервативный 2PL предотвращает тупики .
Разница между 2PL и C2PL заключается в том, что транзакции C2PL получают все необходимые блокировки до начала транзакции. Это делается для того, чтобы транзакция, которая уже удерживает некоторые блокировки, не блокировала ожидание других блокировок.
При сильном конфликте блокировок C2PL в среднем сокращает время удержания блокировок по сравнению с 2PL и Strict 2PL, поскольку транзакции, удерживающие блокировки, никогда не блокируются.
При незначительном конфликте блокировок C2PL удерживает больше блокировок, чем необходимо, поскольку трудно предсказать, какие блокировки потребуются в будущем, что приводит к увеличению накладных расходов.
Кроме того, транзакция даже не получит никаких блокировок, если она не сможет получить все необходимые ей блокировки в своем первоначальном запросе. Более того, каждая транзакция должна объявить свой набор для чтения и записи (элементы данных, которые будут читаться/записываться во время транзакции), что не всегда возможно. Из-за этих ограничений C2PL используется не очень часто.