多线程环境下怎样保证数据库一致性
如果你采用Mysql且不是分布式的数据库,大可不必想太多。数据库本身就是有相应机制的,比如行锁,你在修改某一行的时候将会锁定这行的数据,不可对他再进行读写,你在读取某一行的时候,不可对他进行写操作,这都是数据库实现好的。所以此种情况下多线程环境下如何保证数据库一致性只需要考虑代码中的并发场景问题,不要出现多个线程同时修改一条数据并且不错并发保护就好了 比如游戏服务器中的战斗剩余次数的修改,战斗剩余次数-1 一定要在战斗结束之前操作,如果在战斗结束之后-1,那么此时玩家可能在剩余次数事实为0的时候,再次发起战斗(因为战斗已经结束,战斗标识表示可以再次发起战斗,且此时若-1操作由于网络原因还没执行,又来了一次战斗发起,战斗剩余次数验证失效,又开启一次战斗),-1操作还没有完成,就会有可能出现执行两次-1,这时就会出现你说的并发问题,战斗剩余次数变成了-1,也可以理解为我们的战斗开始验证,战斗开始,战斗计算,战斗结算,战斗修改相关数据,战斗结束是一个逻辑上的事务,这可以说是你想知道的一个场景了。这是我曾经遇到过的一个并发场景,确实出现了挑战次数-1 的情况
■网友
如果不是分布式,可使用锁机制,根据你的业务场景,选择合适的锁。比较单一的系统,乐观锁就可以了
■网友
事务处理机制+threadlocal
■网友
崇尚最终一致
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 河北承德持续改善水环境质量水质达标率100%
- 杭州已整改城市道路无障碍环境问题12467处
- 上海构建现代环境治理体系集成示范区打造超大城市生态环境治理的“样本”
- 互联网怎样解决“家政服务上门速度慢”的问题
- 接待日|省生态环境厅来通开展“企业环保接待日”
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- |淮安市生态环境局倾心帮扶马渡村脱贫增收
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结