В информатике , в области баз данных , конфликт чтения-записи , также известный как неповторяющиеся чтения , является вычислительной аномалией, связанной с чередующимся выполнением транзакций. В частности, конфликт чтения-записи возникает, когда «транзакция запрашивает чтение сущности, для которой незакрытая транзакция уже сделала запрос на запись». [1]
Дано расписание S
В этом примере T1 прочитал исходное значение A и ждет завершения T2. T2 также читает исходное значение A, перезаписывает A и фиксирует.
Однако, когда T1 читает из A, он обнаруживает две разные версии A, и T1 будет вынужден прерваться , потому что T1 не будет знать, что делать. Это неповторимое чтение. Это никогда не могло бы произойти в последовательном расписании, в котором каждая транзакция выполняется полностью до начала другой. Строгая двухфазная блокировка (Strict 2PL) или сериализуемая изоляция моментальных снимков (SSI) предотвращают этот конфликт.
Алиса и Боб используют веб-сайт для бронирования билетов на определенное шоу. На определенное шоу остался только один билет. Алиса регистрируется первой, чтобы увидеть, что остался только один билет, и находит его дорогим. Алисе требуется время, чтобы принять решение. Боб регистрируется и также обнаруживает, что остался один билет, и мгновенно заказывает его. Боб покупает и выходит из системы. Алиса решает купить билет, но обнаруживает, что билетов нет. Это типичная ситуация конфликта чтения-записи.