У меня есть система Pgpool с несколькими узлами, работающими в режиме ведущий-ведомый. У меня также есть некоторые ресурсы, которые имеют высокий уровень параллелизма и слишком много откатов.
Я думал о двух решениях:
Используйте SELECT ... FOR UPDATE
запросы для блокировки строк и отправки их только на главный узел (при pgpool выбор для обновления недоступен). На самом деле, мне пришлось бы отправить всю транзакцию на мастер.
Используйте Redis для распределения блокировок, чтобы заблокировать каждую строку, и используйте обычный SELECT
без блокировок.
Какое решение лучше? Есть другие решения для решения этой проблемы?