Читай преданное и фантомное читай (весна) - PullRequest
1 голос
/ 18 ноября 2010

Что происходит, когда у меня установлен уровень изоляции Read Committed и в моей транзакции выполняется фантомное чтение. Откатывается и перезапускается или просто откатывается?

Ответы [ 3 ]

2 голосов
/ 18 ноября 2010

Если мое понимание изоляции с обязательным чтением не является выигрышным (всегда возможно), то весь смысл обязательного чтения заключается в том, что вы не можете видеть фантомные строки - строки, которые были изменены другой транзакцией, но изменение никогда не было зафиксировано и впоследствии откатано , Таким образом, на уровне приложения с изоляцией Committed Read приложение не может видеть фантомы.

То, что СУБД делает внутри, зависит от СУБД. В системе MVCC ваша транзакция будет просто читать версию, зафиксированную на момент начала вашей транзакции. В системе блокировки вы можете нажать блокировку другой транзакции, а затем ваша собственная может пропустить или заблокировать. Однако, AFAIK, СУБД не выполняет откат вашей транзакции из-за проблемы.

1 голос
/ 18 ноября 2010

Нет, это ничего не заставляет откатываться.Что происходит, если ваш код видит неверные данные и, вероятно, на основании этого принимает неправильные решения, вот и все.

0 голосов
/ 18 ноября 2010

Вы можете увидеть устаревшие данные (только если при втором чтении эта строка была в этой таблице с обновленными столбцами). Чтобы избавиться от таких вещей, которые могут испортить ваши данные, используйте оптимистическую блокировку.

...