Sobes.tech
Назад к вопросам
Junior — Middle
63

Можете объяснить концепцию оптимистичной блокировки и как она работает в системах управления базами данных?

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

sobes.tech AI

Оптимистичная блокировка — это подход к управлению конкурентным доступом к данным, при котором предполагается, что конфликты при одновременном изменении данных случаются редко. В системах управления базами данных она работает так:

  1. Когда транзакция читает данные, она не блокирует их.
  2. При попытке записи транзакция проверяет, не изменились ли данные с момента чтения (например, сравнивая версию или контрольную сумму).
  3. Если данные не изменились, запись проходит успешно.
  4. Если данные были изменены другой транзакцией, текущая операция прерывается или повторяется.

Это отличается от пессимистичной блокировки, где данные блокируются сразу при чтении или записи, чтобы избежать конфликтов.

Пример в 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;
    }
}

Здесь версия используется для проверки, не изменились ли данные с момента последнего чтения.