Встречается на собеседованиях • сегодня

Что будет, если прочитать незакоммиченные данные

При чтении незакоммиченных данных поведение зависит от уровня изоляции транзакции:

  1. READ_UNCOMMITTED - можно прочитать "грязные" данные (Dirty Read) из другой незавершенной транзакции. Это самый низкий уровень изоляции.

  2. READ_COMMITTED и выше - система не позволит увидеть незакоммиченные изменения других транзакций. Будет возвращено либо старое значение, либо запрос будет ждать завершения транзакции (в зависимости от реализации).

Пример с READ_UNCOMMITTED:

java
// Транзакция 1
connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
// Обновляет данные, но не коммитит
statement.executeUpdate("UPDATE accounts SET balance = 100 WHERE id = 1");

// Транзакция 2 (параллельно)
connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
// Может прочитать незакоммиченное значение 100
ResultSet rs = statement.executeQuery("SELECT balance FROM accounts WHERE id = 1");

READ_UNCOMMITTED редко используется из-за риска несогласованных данных. В большинстве случаев лучше использовать более строгие уровни изоляции.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы