Например для Snapshot isolation?
Есть же ещё последствия "очевидного bloat" (visibility maps, например). Далее, потенциальные проблемы с репликами. Ну и, в общем и среднем, чем дольше удерживаются блокировки, тем выше шанс, что за ними заблокируется что-то ещё (другие транзакции). А если долгая транзакция продолжает их накладывать — и она может за кем-то заблокироваться. Соответственно, и вероятность deadlocks в таких сценариях выше — а чем дольше транзакция, тем дольше её повторять, если она станет жертвой в такой ситуации.
Ну это плюс-минус очевидные последствия
поэтому оракловая snapshot too old выглядит нужной и полезной =)
Да и в pg замутить её никто не мешает. Но мало кто делает, поскольку обычно всё-таки лучшэ разбираться с этим по-другому.
-- работает alter table test_generated alter column id restart with 1000; -- не работает alter table test_serial alter column id restart with 1000;
вдогонку - есть, например, так и не починенный баг вакуума, что в случае таких транзакций неправильно считается горизонт
Ну включите old_snapshot_threshold (см. https://www.postgresql.org/docs/current/runtime-config-resource.html ) и наслаждайтесь (специально сделано для ушибленных переходящих с Oracle, кстати).
Обсуждают сегодня