Advisory locks блокируют логический ключ, выбранный приложением, а не автоматически строки таблицы. Для короткой бизнес-операции удобна блокировка до конца транзакции.
Что такое Advisory Locks (рекомендательные блокировки) в PostgreSQL и как их использовать для бизнес-оркестрации?
Advisory locks блокируют логический ключ, выбранный приложением, а не автоматически строки таблицы. Для короткой бизнес-операции удобна блокировка до конца транзакции.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Advisory locks блокируют логический ключ, выбранный приложением, а не автоматически строки таблицы. Для короткой бизнес-операции удобна блокировка до конца транзакции.
Например, внутри BEGIN выполните SELECT pg_advisory_xact_lock(42, 123);: первая часть ключа может обозначать тип операции, вторая — объект. Затем проверьте условия и выполните изменения; commit или rollback освобождает блокировку.
pg_try_advisory_xact_lock позволяет не ждать занятый ключ. Все конкурирующие участники должны соблюдать один протокол, иначе защиты нет. Не держите транзакцию во время долгого внешнего вызова. Session-level locks требуют явного освобождения и особенно осторожного применения с пулом соединений. Идемпотентность и ограничения БД всё равно нужны.
Источник: www.postgresql.org.