Разница между неизменяемым чтением и грязным чтением
Из этот учебник по азарту java:
Непрерывное чтение происходит, когда транзакция A извлекает строку, транзакция B впоследствии обновляет строку, а транзакция позднее снова возвращает ту же строку. Транзакция A извлекает ту же строку дважды, но видит разные данные.
В чем разница между чтением грязного и неизменяемым? Разве это не одно и то же? чтение неправильного результата из-за обновления других?
Спасибо заранее.
Ответы
Ответ 1
На той же странице объясняется, что такое грязное чтение:
Доступ к обновленному значению, которое не было совершено, считается грязным, потому что это можно вернуть к его предыдущему значению. Если вы прочтете значение, которое позже будет отброшено назад, вы увидите недопустимое значение.
Таким образом, неповторяемое чтение состоит в чтении двух разных зафиксированных значений, тогда как грязное чтение состоит в чтении значения, которое еще не было зафиксировано. Совсем другое.
Ответ 2
От здесь: -
Грязные чтения возникают, когда одна транзакция считывает данные, написанные другим, не зарегистрировано, сделка. Опасность с грязными чтениями заключается в том, что другая транзакция никогда не будет совершена, оставив исходную транзакцию с "грязными" данными.
Не повторяющиеся чтения возникают, когда одна транзакция пытается получить доступ к одинаковые данные дважды, а вторая транзакция изменяет данные между первые попытки считывания транзакций. Это может привести к первому транзакции для чтения двух разных значений для одних и тех же данных, оригинал считается невоспроизводимым.