Вопрос проверяет понимание аномалий, возникающих при конкурентном доступе к данным в транзакциях.
Грязное чтение — это чтение незафиксированных данных.
Неповторяемое чтение — изменение данных между двумя чтениями.
Фантомное чтение — появление новых строк при повторном запросе.
Эти аномалии зависят от уровня изоляции транзакций.
Они напрямую связаны с компромиссами между изоляцией и производительностью.
При параллельном выполнении транзакций возможны аномалии чтения, если изоляция недостаточна.
Определение:
Грязное чтение — это ситуация, когда транзакция читает данные, которые ещё не были зафиксированы другой транзакцией.
Сценарий:
Транзакция A изменяет данные.
Транзакция B читает эти данные.
Транзакция A откатывается.
Результат:
транзакция B видела данные, которых не существует.
Определение:
Неповторяемое чтение возникает, когда повторное чтение строки возвращает разные значения.
Сценарий:
Транзакция A читает строку.
Транзакция B изменяет и фиксирует эту строку.
Транзакция A читает её снова.
Определение:
Фантомное чтение — это появление или исчезновение строк при повторном выполнении запроса.
Сценарий:
Транзакция A выполняет SELECT с условием.
Транзакция B вставляет новые строки и фиксируется.
Повторный SELECT возвращает другой набор строк.
Грязные, неповторяемые и фантомные чтения — это аномалии конкурентного доступа, которые контролируются уровнями изоляции транзакций.