Подскажите пожалуйста что происходит в Oracle при выполнении SELECT'а без FOR UPDATE.
А именно интересует следующее:
Допустим есть две таблицы Tbl1 и Tbl2.
В первой транзакции я делаю SELECT X FROM Tbl1, затем приходит вторая транзакция, меняет X в Tbl1, меняет Y в Tbl2 и фиксируется.
Далее я в первой транзакции делаю SELECT Y FROM Tbl2.
Какое значение Y вернет второй SELECT первой транзакции? На момент старта первой транзакции или уже отредактированную версию?
Зависит ли это от уровня изоляции?
Интересует 9я версия, в доках я что-то с ходу не нашел, а сервера проверить под рукой нету.. ;(
Oracle - select (Read Skew)
-
- Уже с Приветом
- Posts: 342
- Joined: 31 Jul 2001 09:01
- Location: Minsk -> CT
Re: Oracle - select (Read Skew)
Если под "фиксируется" имеется ввиду commit, то должно вернуть отредактированную версию.
IA
-
- Уже с Приветом
- Posts: 109
- Joined: 26 Sep 2002 12:24
Да, под "фиксируется" я имел ввиду именно commit.
Это действительно будет так? Даже при уровне изоляции Serializable?
Если не сложно, расскажите тогда, каким образом в Oracle гарантируется отсутствие неповторимого чтения и фантомов при Serializable IL. Или ткните в документацию, где это описано..
Просто при Tbl1=Tbl2 и X=Y, описанный сценарий как раз превращается в неповторимое чтение, тоесть уровень изоляции в этом случае Read Commited, а при Serializable такого происходить не должно..
Это действительно будет так? Даже при уровне изоляции Serializable?
Если не сложно, расскажите тогда, каким образом в Oracle гарантируется отсутствие неповторимого чтения и фантомов при Serializable IL. Или ткните в документацию, где это описано..
Просто при Tbl1=Tbl2 и X=Y, описанный сценарий как раз превращается в неповторимое чтение, тоесть уровень изоляции в этом случае Read Commited, а при Serializable такого происходить не должно..
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Oracle - select (Read Skew)
На оракловском уровне SERIALIZABLE (что на самом деле таковым не является) второй SELECT вернёт значение Y на момент начала первой транзакции, т.е. неотредактированную версию. Поэтому неповторяющегося чтения не будет.
Cheers