Блокирует ли PostgreSQL целую таблицу при изменении данных?

UPDATE берёт табличную блокировку ROW EXCLUSIVE и блокирует затронутые строки, но это не запрет всех обращений к таблице. Обычные SELECT и изменения независимых строк обычно продолжаются.

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

Что ответить на собеседовании

UPDATE берёт табличную блокировку ROW EXCLUSIVE и блокирует затронутые строки, но это не запрет всех обращений к таблице. Обычные SELECT и изменения независимых строк обычно продолжаются.

Подробный разбор

Ответ с пояснениями

UPDATE берёт табличную блокировку ROW EXCLUSIVE и блокирует затронутые строки, но это не запрет всех обращений к таблице. Обычные SELECT и изменения независимых строк обычно продолжаются.

Конфликт зависит от режима блокировки и конкретных данных. Некоторые DDL требуют ACCESS EXCLUSIVE и мешают обычным чтениям. Долгая транзакция удерживает locks дольше и может создать очередь ожидания. Поэтому фраза «PostgreSQL блокирует только строки» неточна, как и утверждение «любое обновление останавливает всю таблицу».

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее