Back to questions
IT One
Junior — Middle
64
Можете объяснить концепцию оптимистичной блокировки и как она работает в системах управления базами данных?
Companies where asked
Answer from AI
sobes.tech AI
Оптимистичная блокировка — это подход к управлению конкурентным доступом к данным, при котором предполагается, что конфликты при одновременном изменении данных случаются редко. В системах управления базами данных она работает так:
- Когда транзакция читает данные, она не блокирует их.
- При попытке записи транзакция проверяет, не изменились ли данные с момента чтения (например, сравнивая версию или контрольную сумму).
- Если данные не изменились, запись проходит успешно.
- Если данные были изменены другой транзакцией, текущая операция прерывается или повторяется.
Это отличается от пессимистичной блокировки, где данные блокируются сразу при чтении или записи, чтобы избежать конфликтов.
Пример в Java с использованием версии для оптимистичной блокировки:
class Entity {
private int version;
private String data;
public synchronized void update(String newData, int expectedVersion) throws Exception {
if (this.version != expectedVersion) {
throw new Exception("Данные были изменены другим процессом");
}
this.data = newData;
this.version++;
}
public synchronized int getVersion() {
return version;
}
public synchronized String getData() {
return data;
}
}
Здесь версия используется для проверки, не изменились ли данные с момента последнего чтения.