Если не используется блокировка и, следовательно, не существует изоляции между транзакциями, то могут возникнуть следующие четыре проблемы:
♦ потеря обновлений;
♦ грязное чтение (обсуждавшееся в разд. «Блокировка» ранее);
♦ неповторяемое чтение;
♦ фантомные записи.
Проблема потери обновлений при одновременном доступе появляется, когда не существует изолированности одной транзакции от всех других транзакций. Это означает, что несколько транзакций могут читать одни и те же данные и изменять их. Изменения данных, выполненные всеми транзакциями за исключением транзакции, выполнившей эти изменения последней, будут потеряны.
Проблема неповторяемого чтения при одновременном доступе появляется, когда один процесс читает данные несколько раз, а другой процесс изменяет те же данные между двумя операциями чтения в первом процессе. По этой причине данные, прочитанные в различных операциях, будут разными.
Проблема фантомных записей при одновременном доступе похожа на проблему неповторяемого чтения, потому что две последовательные операции чтения могут получать различные значения, однако в данном случае смысл такого поведения заключается в различном количестве строк, прочитанных в первый раз и во второй раз. (Дополнительные строки, называемые фантомными, были добавлены другими транзакциями.)