Node.js · Senior · Запитання 72 з 75
Два запити одночасно читають запис, змінюють і зберігають його, і одне оновлення губиться. Як цьому запобігає оптимістичне блокування?
- 1Запити обробляє лише один процес Node.js
- ✓Правильна відповідь: У кожного рядка є версія; оновлення містить
WHERE version = $oldі не спрацьовує, якщо інший запис уже змінив рядок, тож клієнт повторює - 3База блокує всю таблицю при кожному читанні
Пояснення
Оптимістичне блокування добре, коли конфлікти рідкісні. Песимістичне (SELECT ... FOR UPDATE) підходить для частих конфліктів, але довше тримає блокування.