+
首页
开源软件
问答
博客
翻译
资讯
Gitee
众包
活动
专区
源创会
高手问答
开源访谈
周刊
公司开源导航页
登录
注册
资讯
博客
软件
造物
智库
动弹
专区
活动
工具
培训
Gitee
新媒体
OSC 直播栏目
技术领航
OSC 公众号
硬核 + 嬉笑怒骂
OSC 微博
技术圈大 V 出没
OSC 视频号
AI 百科
OSC 今日头条
微头条显行业百态
LFOSSA 公众号
LF 开源软件学园
模力方舟公众号
大模型托管平台
Gitee 服务号
研发管理解决方案
登录
注册
新版
开源问答
技术问答
正文
并发扣减商品库存,避免数据库更新,导致行锁?
Hugo2038
发布于 2016/09/03 22:13
阅读 3K+
收藏
1
答案
8
数据库
同一个商品,商品表分表,同一个商品的库存扣减,直接SQL更新扣减,会导致并发行锁。怎么避免?使用分布式锁?还是有什么方案?
收藏 (
1
)
分享
微博
QQ
微信
举报
加载中
最多投票
最新
0
sunnysky
2016/09/04 13:18
引用来自“sunnysky”的评论
可以在数据库加一个版本号,每次update时保证版本号是最新的即可,否则继续查询,直到取到最新版本号才更新。
引用来自“io2038”的评论
就是担心行锁,事务未提交时,肯定会锁住。
行锁就行锁呗,不死锁就行了。能保证最终数据一致性就行了。
评论 (
0
)
引用此答案
举报
0
宏哥
2016/09/03 22:23
首先,你得去除mysql
评论 (
1
)
引用此答案
举报
ked
2016/09/04 08:57
说的好像某p能解决行锁问题一样
回复
举报
0
sunnysky
2016/09/03 22:59
可以在数据库加一个版本号,每次update时保证版本号是最新的即可,否则继续查询,直到取到最新版本号才更新。
评论 (
0
)
引用此答案
举报
0
Hugo2038
2016/09/04 06:37
引用来自“sunnysky”的评论
可以在数据库加一个版本号,每次update时保证版本号是最新的即可,否则继续查询,直到取到最新版本号才更新。
就是担心行锁,事务未提交时,肯定会锁住。
评论 (
0
)
引用此答案
举报
0
ked
2016/09/04 09:00
iPhone
像库存这么细的颗粒度,要保持数据一致性,必定是要锁的。就看你在哪锁。建议把数量放到redis里,利用red is
评论 (
0
)
引用此答案
举报
0
Hugo2038
2016/09/04 21:11
引用来自“sunnysky”的评论
可以在数据库加一个版本号,每次update时保证版本号是最新的即可,否则继续查询,直到取到最新版本号才更新。
引用来自“io2038”的评论
就是担心行锁,事务未提交时,肯定会锁住。
引用来自“sunnysky”的评论
行锁就行锁呗,不死锁就行了。能保证最终数据一致性就行了。
发生行锁,返回让重试?
评论 (
0
)
引用此答案
举报
我要回答
Hugo2038
最近登录:08/02 08:38
全部
Hug...的其他提问
RocketMQ奇葩问题,在windows 10服务正常启动,但是发送消息时就报错
3 回答 (已采纳)
3K+ 阅读
RocketMQ奇葩问题,在windows 10服务正常启动,但是发送消息时就报错
3 回答
2K+ 阅读
spring ioc解决注入冲突方案,你有解决方法?
9 回答 (已采纳)
1K+ 阅读
微服务个数多时,数据库连接不够用,有什么方案?
7 回答 (已采纳)
6K+ 阅读
spring ehcache配置拦截器缓存问题
1 回答
442 阅读
热门资讯
1
每个开发者都能做的工业质检AI,RT-Thread 命题公布
2
399 美元的鸭子机器人开源了,今年最让人想立刻掏钱的硬件产品
3
203 个开源工具,帮你拿回硬件控制权
4
每周一天,关掉 AI 写代码
5
省下 100TB 内存:Cloudflare 如何给 1.1.1.1 的 DNS 缓存做减法
6
htmx 4.0 正式发布,版本号直接从 2.x 跳到了 4.0
7
李飞飞旗下 AI 实验室 World Labs 发布 Atlas:从几张照片重建 3D 世界
8
ChatGPT 桌面应用里藏着 430MB 的 LibreOffice
9
GPT-6 Astra 发布,OpenAI 总裁 Brockman 说欢迎来到 AGI 时代
10
Vanilla OS 3 Reunion 正式发布:不可变、可重现的桌面操作系统
热门软件
Open Icon Library
- 开源小图标库
Membase
- 开源NoSQL系统
OrientDB
- 多模型 NoSQL 数据库
Firestarter
- Linux 防火墙
Native Client SDK
SWFTools
- Flash 工具包
Sync4J
- 手机同步工具包
Ehcache
- Java 缓存框架
JSP Layout
- JSP布局框架
Liferay Portal
- 企业门户平台
Firebug Lite
UNetbootin
- Linux 网络安装工具
LWUIT
- 手机UI工具包
jQuery4j
Virgo
- Java应用服务器
GWT
- Google Web工具包
Poppler Qt4
MiniBuilder
- ActionScript开发工具
Drigg
- PHP 的 Digg 网站系统
HATop
- HAProxy监控工具
登录后可查看更多优质内容
使用微信快捷登录
顶部
引用来自“sunnysky”的评论
可以在数据库加一个版本号,每次update时保证版本号是最新的即可,否则继续查询,直到取到最新版本号才更新。引用来自“io2038”的评论
就是担心行锁,事务未提交时,肯定会锁住。首先,你得去除mysql
引用来自“sunnysky”的评论
可以在数据库加一个版本号,每次update时保证版本号是最新的即可,否则继续查询,直到取到最新版本号才更新。引用来自“sunnysky”的评论
可以在数据库加一个版本号,每次update时保证版本号是最新的即可,否则继续查询,直到取到最新版本号才更新。引用来自“io2038”的评论
就是担心行锁,事务未提交时,肯定会锁住。引用来自“sunnysky”的评论
行锁就行锁呗,不死锁就行了。能保证最终数据一致性就行了。