![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
shared-бликировки и read commited [MSSQL]
Bless © (2006-02-10 12:08:00)Вопрос носит чисто теоретический характер, но все-равно охота разобраться.
Короче, укажите, где я недопонимаю.
Читаем BOL на команду
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
Specifies that shared locks are held while the data is being read to avoid dirty reads
Как я понял из процитированного, установка уровня изоляции транзакции READ COMMITED решает проблему "грязного чтения". Причем, решается эта проблема путем наложения shared-блокировок.
Я несогласен:
"грязное чтение" - это когда (в хронологическом порядке)
1. одна транзакция меняет данные,
2. вторая - читает измененные данные
3. первая транзакция откатывает данные.
В результате вторая транзакция работала с данными, которых нет. Я правильно понимаю "грязное чтение"?
Но если первая транзакция наложит на данные shared-блокировку, то каким образом это решит проблему, ведь shared-блокировка разрешает чтение данных другим транзакциям?
Имхо, для решения проблемы "грязного чтения" должна быть наложена монопольная блокировка.
В BOL ошибка или я где-то торможу?
evvcom (2006-02-10 14:35:00) [21]
> Имхо, для решения проблемы "грязного чтения" должна быть
> наложена монопольная блокировка.
В Oracle эта проблема решена без блокирования.
Bless (2006-02-10 13:16:00) [22]А как переводится корректно?
Johnmen (2006-02-10 12:27:00) [23]1. В рамках одной транзакции меняются данные,
2. В рамках второй - читаются измененные данные, не подтвержденные первой
3. первая транзакция откатывает данные.
>В BOL ошибка или я где-то торможу?
Просто не очень корректно перевёл.