Блокировки возникают при конкурирующих операциях над одними ресурсами: обновлении строк, проверке ограничений и DDL. MVCC уменьшает конфликты чтения, но не отменяет locks.
Из-за чего появляются блокировки в PostgreSQL?
Блокировки возникают при конкурирующих операциях над одними ресурсами: обновлении строк, проверке ограничений и DDL. MVCC уменьшает конфликты чтения, но не отменяет locks.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Блокировки возникают при конкурирующих операциях над одними ресурсами: обновлении строк, проверке ограничений и DDL. MVCC уменьшает конфликты чтения, но не отменяет locks.
Две транзакции, изменяющие одну строку, могут ждать друг друга. ALTER TABLE способен конфликтовать и с обычными запросами. Для диагностики смотрят ожидающий и блокирующий backend, длительность транзакции и удерживаемые locks через системные представления. Сначала выясняют причину, затем сокращают транзакции и согласуют порядок доступа; слепое завершение соединений опасно.