Я рассматриваю возможность использования TVar для хранения некоторого состояния в веб-приложении (которое можно воссоздать при перезапуске). Однако меня беспокоят спорные аспекты TVar. Кажется, что частая короткая транзакция может привести к истощению более длинных транзакций, постоянно прерывая их. Кроме того, поскольку более длительные транзакции продолжают перезапускаться, это увеличивает нагрузку на ЦП, что приводит к дальнейшему увеличению продолжительности этих транзакций. В конце концов я чувствую, что это может привести к тому, что сервер полностью перестанет отвечать на запросы.
В связи с этим у меня такие вопросы:
(1) Может ли TVar (или другой тип данных) использовать блокировки, а не одновременные попытки/повторные попытки.
(2) Может ли TVar (или другой тип данных) иметь какой-либо другой механизм состязания, т. е. «разрешить транзакциям выполняться в течение секунды, прежде чем запускать другую транзакцию», или, по крайней мере, некоторую гарантию того, что транзакции в конечном итоге завершатся (т. е. алгоритм состязания, который предотвращает голодание для более длительных транзакций).
retry
не перезапускает транзакцию немедленно; транзакции повторяются только тогда, когда используемые имиTVar
изменены. - person ehird   schedule 11.04.2012retry
)? - person Clinton   schedule 11.04.2012