Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: dirty, read

Что такое грязное чтение, неповторяемое чтение и фантомное чтение?

Вопрос проверяет понимание аномалий, возникающих при конкурентном доступе к данным в транзакциях.

Короткий ответ

Грязное чтение — это чтение незафиксированных данных.
Неповторяемое чтение — изменение данных между двумя чтениями.
Фантомное чтение — появление новых строк при повторном запросе.
Эти аномалии зависят от уровня изоляции транзакций.
Они напрямую связаны с компромиссами между изоляцией и производительностью.

Длинный ответ

При параллельном выполнении транзакций возможны аномалии чтения, если изоляция недостаточна.

Грязное чтение (Dirty Read)

Определение:
Грязное чтение — это ситуация, когда транзакция читает данные, которые ещё не были зафиксированы другой транзакцией.

Сценарий:

  1. Транзакция A изменяет данные.

  2. Транзакция B читает эти данные.

  3. Транзакция A откатывается.

Результат:

  • транзакция B видела данные, которых не существует.

Неповторяемое чтение (Non-repeatable Read)

Определение:
Неповторяемое чтение возникает, когда повторное чтение строки возвращает разные значения.

Сценарий:

  1. Транзакция A читает строку.

  2. Транзакция B изменяет и фиксирует эту строку.

  3. Транзакция A читает её снова.

Фантомное чтение (Phantom Read)

Определение:
Фантомное чтение — это появление или исчезновение строк при повторном выполнении запроса.

Сценарий:

  1. Транзакция A выполняет SELECT с условием.

  2. Транзакция B вставляет новые строки и фиксируется.

  3. Повторный SELECT возвращает другой набор строк.

Краткий вывод

Грязные, неповторяемые и фантомные чтения — это аномалии конкурентного доступа, которые контролируются уровнями изоляции транзакций.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

Ключевые слова

#dirty

#read

Подпишись на Java Developer в телеграм