首页 新闻 会员 周边 捐助

求助多线程并发访问数据库取数据,在线等

0
[已解决问题] 解决于 2016-10-28 20:18

假如我有一个表,通过线程池从数据库中取数据,如何做到独占一条数据并尽可能高效,每个数据都有一个状态,我能想到的就是代码加lock,select完update一下status,有没有更好的方式实现

问题补充:

 我的错,问题没有说清楚,是一个服务器集群通过线程池访问一个中转服务器取数据,中转服务器是被动提供数据

MSky的主页 MSky | 菜鸟二级 | 园豆:436
提问于:2016-10-28 08:27
< >
分享
最佳答案
1

数据库的原子操作用的好就行

update table set state=lock output inserted.* where state=enable

大概思路就是这样

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2016-10-28 11:13

您简直就是我的救星,第一次知道SQL还可以这样用,万分感谢

MSky | 园豆:436 (菜鸟二级) | 2016-10-28 20:18
其他回答(1)
0

可以这样,主线程load数据,然后分配给工作线程。工作线程完成批量任务,通知主线程继续分配。

 

czd890 | 园豆:14488 (专家六级) | 2016-10-28 09:15

 我的错,问题没有说清楚,是一个服务器集群通过线程池访问一个中转服务器取数据,中转服务器是被动提供数据

支持(0) 反对(0) MSky | 园豆:436 (菜鸟二级) | 2016-10-28 09:23

@MSky: 中转服务器做一个当前记录呗。啦数据请求到了 原子修改这个下标

支持(0) 反对(0) czd890 | 园豆:14488 (专家六级) | 2016-10-28 09:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册