在从数据库表中扣除用户点数的情况下,当出现请求添加点数的问题时,由于死锁条件,点数未添加,我面临着问题。我需要建议避免僵局。我不能使代码成为线程安全的,因为它将影响处理。我正在使用Postgres作为数据库。
答案 0 :(得分:3)
如果死锁仅偶尔发生,请不要担心。只需重复交易即可。
如果经常发生,您必须做更多的事情才能获得不错的性能。有两种措施可以减少死锁的发生频率:
使交易简短,不要在一次交易中添加或删除多余的点。
每当您在事务中修改多个点时,都以某种固定顺序(例如,按主键列的顺序)处理(并锁定)这些点。