Схема блокировок
В Oracle реализована самая сложная схема блокировок. Ее главным правилом является недопущение блокирования процессами чтения и записи друг друга, даже если они работают с одним и тем же набором данных. Каждый сеанс получает в распоряжение целостный снимок данных. Таким образом, даже если другой процесс начал модификацию набора данных, но пока не подтвердил изменения, все последующие сеансы смогут прочитать те же данные, что и раньше. Как только изменения будут подтверждены в первом сеансе, все остальные сеансы их увидят. Блокировки устанавливаются только в момент подтверждения изменений, при этом Oracle автоматически выбирает наименее строгий их режим. Пользователи имеют воз-можность заблокировать ресурс (к примеру, таблицу) и вручную. В этом случае все остальные пользователи могут не потерять возможность доступа к данным — все зависит от типа установленной блокировки. В IBM DB2 9.5 и Microsoft SQL Server 2008 блокировки могут позволить процессу чтения заблокировать процесс записи и наоборот. Проблема параллельного доступа к данным несколько смягчается гранулярностью блокировок — на уровне таблиц, страниц, столбцов, строк и т. п. Блокировки могут устанавливаться запросами отбора данных, инструкциями DML и DDL. В каждой из типов блокировок используется свой сценарий, о чем детально будет рассказано в следующем разделе. Большую часть времени пользователю незачем волноваться о блокировках, так как СУБД сама для каждой операции выбирает наиболее подходящую из них. Только сбой этой программной логики может заставить пользователя устанавливать блокировки вручную с помощью инструкций SQL.