Встречается на собеседованиях • сегодня
Как избежать гонки значений в БД
Для предотвращения гонки значений в БД используйте механизмы блокировок или оптимистичного контроля версий:
- Блокировки (Pessimistic locking)
Блокируйте запись на время транзакции:Примечание:pythonwith transaction.atomic(): obj = MyModel.objects.select_for_update().get(pk=1) obj.value += 1 obj.save()select_for_update()блокирует строку до конца транзакции.
-
Оптимистичная блокировка (Optimistic locking)
Добавьте поле версии и проверяйте его при обновлении:pythonobj = MyModel.objects.get(pk=1) old_version = obj.version obj.value += 1 updated = MyModel.objects.filter(pk=1, version=old_version).update( value=obj.value, version=old_version + 1 ) if not updated: raise ConcurrentModificationError() -
Используйте атомарные операции
pythonMyModel.objects.filter(pk=1).update(value=F('value') + 1)

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы