2 The Lord of the Rings: The Two Towers 2002 179 94000000 3
3 Titanic 1997 194 200000000 4
4 Avatar 2009 162 237000000 5
5 The Terminator 2: Judgment Day 1991 137 102000000 1
6 Catch Me If You Can 2002 141 52000000
7 Manhattan 1979 96 39000000
8 Gullivers Travels 2010 85 112000000
Example 2:
1я сессия, уровень изоляции Read Committed:
SELECT first 1 film.f_id from film, soundtrack
where soundtrack.author = 9 AND soundtrack.film = film.f_id
ORDER BY film.year_of_creation DESC ;
Результат:
F_ID
4
2я сессия:
INSERT INTO soundtrack (sound_id,name,author,film)
VALUES (4,'ROSES THEME',9,8);
После подтверждения 2й сессии, результат 1й:
F_ID
8
2) Snapshot.
Этот уровень изоляции позволяет транзакции получить состояние базы данных на момент начала транзакции. Эта транзакция не может увидеть любые изменения, сделанные другими параллельными транзакциями.
Example 1:
1я сессия, уровень изоляции Snapshot:
SELECT film.name, website.url FROM film, website WHERE film.site = website.s_id;
Результат:
NAME URL
The Terminator 2: Judgment Day http://www.kinopoisk.ru
The Lord of the Rings: The Fellowship of the Ring http://www.lordoftherings.net
The Lord of the Rings: The Two Towers http://www.lordoftherings.net
Titanic http://www.titanicmovie.com
Avatar http://www.imdb.com
2я сессия, уровень изоляции Read Committed:
UPDATE website SET URL = 'http://www.film.com' WHERE S_ID =1;
После подтверждения 2й сессии, результат 1й не изменился.
После подтверждения 1й сессии, результат 1й сессии:
NAME URL
The Terminator 2: Judgment Day http://www.film.com
The Lord of the Rings: The Fellowship of the Ring http://www.lordoftherings.net
The Lord of the Rings: The Two Towers http://www.lordoftherings.net
Titanic http://www.titanicmovie.com
Avatar http://www.imdb.com
Example 2: (две сессии пишут в таблицу)
1я сессия, уровень изоляции Snapshot:
UPDATE website SET URL = 'http://www.kinopoisk.com' WHERE S_ID =1;
2я сессия, уровень изоляции Read Committed или Snapshot:
UPDATE website SET URL = 'http://www.poisk.com' WHERE S_ID =1;
До подтверждения 1й сессии, в результате выполнения 2й сессии выдаётся сообщение:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
lock conflict on no wait transaction.
deadlock.
update conflicts with concurrent update.
concurrent transaction number is 2391.
3) Snapshot table stability.
Этот уровень изоляции имеет те же свойства, что и предыдущий уровень, а также как только происходит чтение из таблицы, эта таблица блокируется на запись для других транзакций. Другие транзакции могут только читать из этой таблицы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.