В Microsoft SQL Server я использую ИЗОЛЯЦИЮ READ_COMMITTED_SNAPSHOT
ALTER DATABASE MyDatabase
SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON
В сеансе 1 обновите принципала с 4000 до 5000.
BEGIN TRAN
Update MyTable Set Principal=5000 Where InvestorId=10
Теперь в Сессии 2 я говорю
Select Principal from MyTable where InvestorId=10
Я получаю 4000, поскольку транзакция сеанса 1 не зафиксирована.
Если я не использую режим изоляции READ_COMMITTED_SNAPSHOT и использую
- ПРОЧИТАЙТЕ ЗАВЕРШЕННЫЙ РЕЖИМ ИЗОЛЯЦИИ, тогда моя сессия 2 будет ждать
- Если я использую режим READ_UNCOMMITTED ISOLATION, тогда мой сеанс 2 даст 5000 (эквивалентно использованию nolock в инструкции select)
В Oracle, если я выполняю эквивалентный набор команд, по умолчанию он ведет себя так, как если бы установлен режим изоляции READ_COMMITTED_SNAPSHOT.
Я читал в статьях Microsoft, что режим изоляции SNAPSHOT записывает в базу данных tempdb до выполнения обновлений.
-Как Oracle достигает этого по умолчанию?
-Тоже на диск пишет? вызывает ли это проблемы с вводом / выводом?
-Отличается ли уровень блокировки по умолчанию в Oracle от SQL-сервера?
Заранее благодарим за вашу помощь и время.
READ_UNCOMMITTED ISOLATION
вы имеете в видуPOST
в Oracle? - person AnBisw   schedule 19.02.2014