TGViewer
SA: Между бизнесом и реальностью SA: Между бизнесом и реальностью @safromperm · 168 subscribers
Post #78 257
Оптимистичная блокировка - подход, при котором мы не блокируем данные, а просто проверяем, не изменил ли их кто-то другой перед сохранением.

Простая аналогия, представьте, что работаете с Git:
1. Вы создаёте ветку → делаете коммиты → нажимаете git push
2. А кто-то другой уже запушил изменения в main
3. Git говорит: «Конфликт! Сделайте pull и смержите»
4. Вы подтягиваете изменения, разрешаете конфликт → пушите снова ✅

Как это работает в БД:
-- 1. Читаем данные + версию
SELECT balance, version FROM accounts WHERE id = 123;
-- Получаем: balance=100, version=5

-- 2. Меняем у себя в коде
new_balance = 150
new_version = 6

-- 3. Пытаемся сохранить с проверкой версии
UPDATE accounts
SET balance = 150, version = 6
WHERE id = 123 AND version = 5;

-- Если обновлено 0 строк → КОНФЛИКТ! Начинаем с начала
-- Кто-то уже сохранил version=6

Когда применимо:
- Ожидаются редкие конфликты
- Пользователь думает минуты между чтением и сохранением
- Можно откатить транзакцию и начать заново
- Изменяется ограниченный набор строк

Мораль:
Блокировка данных — это дорого.
Конфликт версий — это дёшево.
Оптимистичная блокировка выбирает дешёвый путь, пока он работает.
  • 👍 1
More from @safromperm
  1. Sep 22, 2026Post #93
  2. Sep 22, 2026​💸 А вот и пост про деньги и московскую недвижимость ​На днях знакомый из крупной компани…
  3. Sep 17, 2026Младшие аналитики, принесли вам классный пост, как в компании оценивают скиллы действующие…
  4. Sep 14, 2026Дошли руки до «Руководства по DevOps» 📖 ​Честно говоря, по названию ждал сугубо техническ…
  5. Sep 2, 2026Всем привет! Автор вернулся и привёз с собой вагон новостей! Летом отдыхал от ведения кана…
  6. May 20, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →