|
![]() |
#1 |
Участник
|
График противоречит тексту над ним (выбираем без блокировки, при это после обработки 1/6 записей все они заблокированы)
|
|
![]() |
#2 |
Талантливый разгвоздяй
|
Цитата:
А это тогда о чем? (текст сразу под графиком) Цитата:
When using OCC the positive effect is obvious: There are much more rows available for updating (the olive bars). When we would have PCC the olive bars would not be available for updating, or in the words another process / tranaction would be blocked until all rows are processed. So when using OCC the chances for blocking is much smaller.
|
|
![]() |
#3 |
Участник
|
Там не написано про блокировки после апдейта ничего. OCC работает так:
Выбирает запись, запоминая его версию, дальше апдейтит, выставляя блокировку и проверяя что версия не изменилась. Если версия изменилась, то выбрасывает особый эксепшн. Блокировка держится до конца тразакции. Если бы этого не было, то возможен был бы следующий сценарий. Например некая транзакйия хочет выбрать две записи и их изменить. Если она не заблокирует первую запись до конца транзакции, то при этом другая транзакия сможет увидеть ее содержимое до конца первой транзакции и пойдет дальше с учетом этих грязных данных (dirty read). Первая транзакция может быть откатана, напрммер, потому что вторую запись успела изменить третья транзакция (после чтения первой и до сохранения). И тогда у нас будут в базе данные частично как будто первая транзакция завершилась успешно (в первой записи) в частично как будно нет (во второй) |
|
Теги |
базовая информация, транзакции |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|