免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3523 | 回复: 2
打印 上一主题 下一主题

数据库高并发处理求解???? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-09 23:46 |只看该作者 |倒序浏览
关于数据库高并发处理问题,一个 CS应用, 其中要求在高并发的情况下保证数据完整性.
如: 一个记录用户登录次数的表结构如下:

userID int primary key
AccessCount int default 0

就这两个字段, 当用户ID 不存在时插入一个新纪录, 如果存在则 accessCount 增一.
当同一个ID同时并发访问时会出现错误.比如多个线程线程A,线程B,线程C...... 同一个ID同时访问时会出现冲突.

常规的处理方法即先UPDATE 如果返回 0 则表示没有更新记录,那就 INSERT ,但是高并发时, 会出现更新 AccessCount 的时候没有记录,当插入时却发现已经存在了.

又更好的解决方法么? 数据库为 MYSQL.

论坛徽章:
0
2 [报告]
发表于 2007-04-22 22:29 |只看该作者
INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO table(userID, AccessCount) VALUES(1, 0) ON duplicate KEY UPDATE AccessCount = AccessCount + 1

另外也可以使用事务,mysql innodb 干什么用的。

论坛徽章:
0
3 [报告]
发表于 2007-04-23 19:17 |只看该作者
原帖由 ybbkd2 于 2007-4-9 23:46 发表
关于数据库高并发处理问题,一个 CS应用, 其中要求在高并发的情况下保证数据完整性.
如: 一个记录用户登录次数的表结构如下:

userID int primary key
AccessCount int default 0

就这两个字段, 当用户ID 不 ...



用事务啊,或者存储过程
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP