Можно я сошлюсь на своё сочинение на SO?
https://ru.stackoverflow.com/q/721985/203622
Впрочем пару слов добавлю:
добавив к примеру столбец
Важно какой именно. Если default null - просто берёте и добавляете со statement_timeout в 1 секунду. alter table всё равно возьмёт блокировку на таблицу, но default null поле - это лишь быстрое обновление системного каталога.
Если другой default - то для pg11 просто берёте и добавляете с таймаутом, для более старых немного приключений.