В Microsoft SQL Server, я использую READ_COMMITTED_SNAPSHOT ИЗОЛЯЦИИOracle эквивалент изоляции SQL Server 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 и использовать
- READ COMMITTED Режим ИЗОЛЯЦИЯ тогда моя сессия 2 будет ждать
- Если я использую READ_UNCOMMITTED Mode ISOLATION тогда моя сессия 2 даст 5000 (эквивалентно использованию NOLOCK на операторе выбора)
в Oracle, если я выполнить эквивалентный набор команд, по умолчанию он ведет себя так, как будто режим изоляции READ_COMMITTED_SNAPSHOT устанавливается.
Я прочитал в статьях Майкрософт, что режим изоляции SNAPSHOT записывает в tempdb, прежде чем обновления будут выполнены.
-Как Oracle достигает этого по умолчанию?
-Это также записывается на диск? это вызывает проблемы с вводом/выводом?
- Является ли уровень блокировки по умолчанию в Oracle отличным от SQL-сервера?
Заранее благодарим за помощь и время.
Там нет аналога для «READ_UNCOMMITTED Mode ИЗОЛЯЦИИ» в Oracle. –
«READ_UNCOMMITTED ISOLATION» вы имеете в виду «POST» в Oracle? – Annjawn