Подтвердить что ты не робот

Разница между неизменяемым чтением и грязным чтением

Из этот учебник по азарту java:

Непрерывное чтение происходит, когда транзакция A извлекает строку, транзакция B впоследствии обновляет строку, а транзакция позднее снова возвращает ту же строку. Транзакция A извлекает ту же строку дважды, но видит разные данные.

В чем разница между чтением грязного и неизменяемым? Разве это не одно и то же? чтение неправильного результата из-за обновления других?

Спасибо заранее.

4b9b3361

Ответ 1

На той же странице объясняется, что такое грязное чтение:

Доступ к обновленному значению, которое не было совершено, считается грязным, потому что это можно вернуть к его предыдущему значению. Если вы прочтете значение, которое позже будет отброшено назад, вы увидите недопустимое значение.

Таким образом, неповторяемое чтение состоит в чтении двух разных зафиксированных значений, тогда как грязное чтение состоит в чтении значения, которое еще не было зафиксировано. Совсем другое.

Ответ 2

От здесь: -

Грязные чтения возникают, когда одна транзакция считывает данные, написанные другим, не зарегистрировано, сделка. Опасность с грязными чтениями заключается в том, что другая транзакция никогда не будет совершена, оставив исходную транзакцию с "грязными" данными.

Не повторяющиеся чтения возникают, когда одна транзакция пытается получить доступ к одинаковые данные дважды, а вторая транзакция изменяет данные между первые попытки считывания транзакций. Это может привести к первому транзакции для чтения двух разных значений для одних и тех же данных, оригинал считается невоспроизводимым.