
Пример. Большая система, 100 коннектов, 15000 записей в секунду, но постепенно замедляется до 0. Проблема: все больше процессов поиска взаимоблокировок с монопольным режимом, которые работают одновременно.
Причина: Расширение отношений.
Одновременно на несколько страниц (начиная с версии 9.6)
Однако, расширение индексов - только по одной странице. Это становится узкое место.
Почему? Потому что при UPDATE истекает время deadlock_timeout (из-за того, что происходит расширение индексов), что является сигналом для поиска взаимоблокировок. Это происходит постоянно, поэтому все больше процессов ищут блокировки. Есть патч, возможно скоро появится в ванильном postgresql.






