首页 > 代码库 > 集群中多线程如何处理表中的数据的问题
集群中多线程如何处理表中的数据的问题
1)场景:
网站向消息平台发送消息,消息平台将其保单到数据库中;
后台有多台服务器进行集群,这种情况下就会出现多线程同时获取到同一条消息进行处理的问题?如何解决:
2)具体方案,如下的sql即可解决。
//定义一张qtz_locks表,用来做控制锁使用。
//for update:代表给你查询出的记录添加锁
//nowait: 代表如果获取不到数据不等待直接抛出异常退出
select * from qrtz_locks_ex where lock_name=‘CALENDAR_ACCESS‘ and group_name=‘EPCISNBA‘for update nowait;
select * from proddata.marketproduct_info mi where mi.marketproduct_code=‘MP02000138‘and mi.status=‘1‘;
1)在你处理的代码中首先执行第一条sql,获取控制锁;然后再执行你的查询,进行状态的修改,处理完成后在释放控制锁;
2)这样,在你进行操作前,都必须获取控制锁,才能继续操作,否则就中断,抛出异常。这样就可以做到同一条件记录只能被一条线程所操作。
集群中多线程如何处理表中的数据的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。