Oracle по большей части использует MVCC для управления доступом к данным в базе данных.
Informix и DB2 (среди других СУБД) большую часть времени используют блокировки.
Естьоператоры для блокировки таблиц:
LOCK TABLE tablename IN { SHARE | EXCLUSIVE } MODE;
Если ваша база данных не зарегистрирована, вы можете разблокировать таблицу с помощью:
UNLOCK TABLE tablename;
Если ваша база данных зарегистрирована (нормальное состояние дел),тогда вы можете заблокировать таблицу только внутри транзакции, и блокировка снимается, когда транзакция фиксируется или откатывается.
Кроме того, курсоры с предложением FOR UPDATE применяют блокировки к строкам.Затем вам нужно знать об уровнях изоляции, потому что длительность блокировки чтения зависит от уровня изоляции, хотя блокировки обновления (потому что изменяется строка) всегда действуют до конца транзакции.
Действительно, если вы работаетес REPEATABLE READ (иначе SERIALIZABLE - за уровнями изоляции Informix по сравнению со стандартными уровнями изоляции существует сложная история), тогда все операторы применяют блокировки к обработанным строкам и даже к предикатам, используемым для определения того, какие строки были обработаны.Это необходимо для обеспечения изоляции.