Блокировки, уровни изоляции и дедлоки

Зачем это знать:

  • Частая причина “всё медленно” — ожидание блокировок, а не CPU.

  • Аналитику важно уметь заложить правила работы с транзакциями в требованиях/интеграциях.

Связанные темы:

MVCC и снимки транзакций

Мониторинг и диагностика PostgreSQL


MVCC и блокировки

  • MVCC снижает конфликты “чтение vs запись”, но блокировки всё равно есть:
  • DDL,
  • конкурирующие записи в одни и те же строки,
  • явные блокировки/SELECT FOR UPDATE,
  • уникальные индексы и конкурирующие вставки.

Уровни изоляции (на уровне идеи)

  • Чем выше изоляция, тем больше гарантий и потенциальных конфликтов.

  • Важно согласовать ожидания: “можем ли видеть фантомы/неповторяемое чтение” и т.д.


Дедлоки

  • Возникают, когда транзакции держат взаимные ресурсы и ждут друг друга.

Практика:

  • единый порядок захвата ресурсов,

  • короткие транзакции,

  • минимизировать “человек в транзакции” (не держать транзакцию во время внешних вызовов).

Последнее обновление