2016-11-14 3 views
0

У меня есть конкретный вопрос, на мой взгляд на какой-то момент, скажем, у меня есть график, как это:Может ли блокировка предотвращать неповторимые чтения?

S2 (A), R2 (А), U2 (A), X1 (A), W1 (A), Commit1 (А), U1 (А), S2 (А), R2 (А), U2 (А)

  • S является доля блокировки, Х представляет собой эксклюзивную блокировку, U является разблокировать либо блокировку акций или эксклюзивные замок.

Даже если у меня есть общий замок и исключительная блокировка здесь, я все равно получаю различное значение A в транзакции 2, которое происходит в самом начале и в конце - поскольку транзакция 1 изменяет значение A в середине.

В этом случае это означает, что замки не могут предотвратить непревзойденные чтения вообще?

+0

Какая платформа базы данных? – OldProgrammer

+1

Либо я не понимаю, что вы подразумеваете под своим расписанием, либо у вас есть что-то не так: общая блокировка на A для 2 означает: a) 1 не может получить исключительную блокировку на A и b) 1 не может изменить A. Ваш график (если это означает, что порядок выполнения, а не заказ заявки) нарушает оба. И, конечно, замки могут предотвратить неповторимые чтения. Доказательство. По крайней мере, одна существующая система баз данных поддерживает уровень изоляции «Повторяемый Чтение». – Solarflare

+0

@Solarflare Я добавил U для разблокировки выше, пожалуйста, посмотрите. Расписание означает, что 2 сначала читает A, затем 1 изменяет A на некоторое другое значение, после этого 2 снова читает A. Так как 2 читает два разных значения As, это должно быть неповторимым, и блокировка не мешает ему –

ответ

0

Slocks блокирует значение A и не позволит вам установить XLock так что вы не можете писать новое значение A, если вы не reamove тушить удаляется.

и Xlocks не позволит одновременно читать и записывать значение A, если его не будут удалены.

Смежные вопросы