Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Postgres: locking, optimistic, pessimistic, concurrency

Что такое optimistic locking и в каких кейсах он лучше pessimistic locking?

Проверяет понимание механизмов защиты данных от гонок.

Короткий ответ

Optimistic locking предполагает, что конфликты редки: обновление проходит только если версия строки не изменилась. Pessimistic locking блокирует строку заранее. Оптимистичный лучше, когда число конфликтов низкое и блокировки вредны.

Длинный ответ

Optimistic locking

Использует версионность:

UPDATE users SET balance = ... WHERE id = 1 AND version = 10

Если version изменилась — UPDATE ничего не изменит → конфликт.

Плюсы:

  • нет долгих блокировок

  • масштабируется

  • безопасно при редких конфликтах

Pessimistic locking

Использует:

SELECT ... FOR UPDATE;

Блокирует строку до конца транзакции.

Плюсы:

  • нет конфликтов

  • подходит для банковских операций

Минусы:

  • возможны deadlock

  • слабая масштабируемость

Вывод:

optimistic — для high-load;

pessimistic — для критичных финансовых операций.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

Ключевые слова

#locking

#optimistic

#pessimistic

#concurrency

Подпишись на Golang Developer в телеграм