开发者社区> 问答> 正文

有个问题困惑了好久,关于mysql表的设计

现在有个业务需要,就是账户余额的问题,怎么去设计这个账户余额的表呢?简单的update更新余额显然是行不通的如果用户在pc端,移动端操作余额,很有可能发生错误难道必须用事务吗?

展开
收起
蛮大人123 2016-02-06 18:08:03 2019 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    这个跟事务没啥关系吧,你说的应该是锁吧。其实你要解决的问题只有一个:同步安全问题,解决方法两种:
    1.使用数据库提供的锁
    每次对余额进行操作之前先对余额进行加锁(行锁,for update),然后就可以随意操作了,记得最后提交事务即可(会自动释放锁,注意MySQL不要开启自动提交事务)
    2.应用程序自己提供锁
    如果不管是PC端还是移动端对余额的操作都走同一个接口,那么直接在该接口中使用分离锁(针对每个用户一个锁)对需要进行余额操作的请求进行加锁即可。
    如果走的不是同一个接口,那么就需要分布式锁了,redis有一个方案可提供分布式锁,可以参考Redis官方给出的的方案

    2019-07-17 18:38:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像