Проблема грязного чтения - обновление в базе данных после транзакции, выполняющей грязные коммиты на чтение - PullRequest
0 голосов
/ 13 февраля 2019

Предположим, у нас есть 2 транзакции как T1, T2, где T2 выполняет грязное чтение данных, измененных T1, и фиксирует их перед T1.Теперь предположим, что T1 не работает и выполняется откат.Мой вопрос: поскольку T2 фиксируется, изменения, сделанные T2, переносятся из общего буфера в исходную базу данных или нет (так как я прочитал, что изменения, сделанные транзакцией, становятся постоянными для исходного db после фиксации транзакции)?И если они будут перенесены в исходную базу данных, то как откатится T1 и получит предыдущее значение элемента данных (который T2 считал грязным)?По его буферу или исходной базе данных?

1 Ответ

0 голосов
/ 13 февраля 2019

Если вы специально не вызываете грязное чтение, устанавливая уровень изоляции, то такого рода проблемы просто не могут возникнуть.Вот и вся идея сделки.T2 будет заблокирован из строки, если T1 обновил его.Если вы разрешаете грязное чтение, установив set transaction isolation level read uncommitted, то обработка данных зависит от вас, как правило, с использованием версии строки, которая не проверялась вашими проверками T2 до фиксации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...