Nikolay
СУБД не важна. В 2PL блокировки все отпускаются только в конце транзакции. А в SI берется shared на таблицу только в момент чтения данных из нее и после сразуже отпускается. вот например, если есть 2 селекта внутри одной транзакции, то если это SI , то сначала взмется shared на одну таблицу. из нее прочитаются данные. блокировка отпустится. Дальше возмется блокировка на 2ю таблицу и считается данные из нее . после этого shared блокировка сразу отпустится. А если это 2PL, то блокировка shared даже на первую таблицу будет держатся, когда из нее уже все прочитали. Согласны?
> СУБД не важна.
А, т.е. Вы ответа на свой вопрос не знаете, но уже откуда-то знаете, что СУБД не важна? ;)
> А в SI берется shared на таблицу только в момент чтения данных из нее и после сразуже отпускается.
В PostgreSQL (MVCC), например (раз "СУБД не важна") никакого shared lock на данные не берётся. А вот lock на таблицу сохраняется до конца транзакции.
> Согласны?
Нет, не согласен. И факты не согласны. Более того, в упомянутом PostgreSQL никаких "обычных" блокировок SERIALIZABLE по сравнению с другими уровнями не добавляет. И, кстати, RR не берёт никаких дополнительных блокировок по сравнению с RC.