![one.png](https://static.studygolang.com/180626/5c08666c74159d253b05c80e6dd95a65.png)
##### 我仅仅是实现一个插入更新功能:首先判断符合条件的记录是否存在,如果不存在,则插入, 否则更新第四列字段。最终,
##### 在传入同样的请求参数的情况下,也只会有一行记录, 但是,当请求数多的时候。出现了这样。我已经使用过mutex,目的
##### 是达到了,但是,性能不理想,请问大家,有比较优的解决方案吗?
![two.png](https://static.studygolang.com/180626/d134bf41224ff74cc2f94d5d6b729e1d.png)
感觉这个不是语言并发/并行机制的问题,而更像是个设计问题,要解决这个问题我觉得下面的两项需要考虑
1、开启数据库事务,或者程序锁,如果没有强一致性的需求,乐观锁可以考虑一些无锁并发算法,例如:Compare and swap(一致性)
2、唯一key,而不是自增或者类似无意义ID(等幂性)
#7
更多评论
<a href="/user/yyl719133368" title="@yyl719133368">@yyl719133368</a> 对,就是多协程导致数据重复
#2