Конфликт чтения-записи

Конфликт чередующихся транзакций

В информатике , в области баз данных , конфликт чтения-записи , также известный как неповторяющиеся чтения , является вычислительной аномалией, связанной с чередующимся выполнением транзакций. В частности, конфликт чтения-записи возникает, когда «транзакция запрашивает чтение сущности, для которой незакрытая транзакция уже сделала запрос на запись». [1]

Дано расписание S

С = [ Т 1 Т 2 Р ( А ) Р ( А ) Вт ( А ) С о м . Р ( А ) Вт ( А ) С о м . ] {\displaystyle S={\begin{bmatrix}T1&T2\\R(A)&\\&R(A)\\&W(A)\\&Com.\\R(A)&\\W(A)&\\Com.&\end{bmatrix}}}

В этом примере T1 прочитал исходное значение A и ждет завершения T2. T2 также читает исходное значение A, перезаписывает A и фиксирует.

Однако, когда T1 читает из A, он обнаруживает две разные версии A, и T1 будет вынужден прерваться , потому что T1 не будет знать, что делать. Это неповторимое чтение. Это никогда не могло бы произойти в последовательном расписании, в котором каждая транзакция выполняется полностью до начала другой. Строгая двухфазная блокировка (Strict 2PL) или сериализуемая изоляция моментальных снимков (SSI) предотвращают этот конфликт.

Пример из реальной жизни

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

Смотрите также

Ссылки

  1. ^ Stearns, Richard E. ; Rosenkrantz, Daniel J. (1981). Распределенные элементы управления параллелизмом баз данных с использованием значений до обработки. 1981 ACM SIGMOD Международная конференция по управлению данными. Нью-Йорк, США: Ассоциация вычислительной техники . С. 74–83. doi :10.1145/582318.582330. ISBN 0-89791-040-0.
Взято с "https://en.wikipedia.org/w/index.php?title=Read–write_conflict&oldid=1206417149"