BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #24765同步于 2013/4/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

hibernate多线程操作数据库的一张表,如何避免多线程间的冲突?

dragontwf
2013/4/11镜像同步3 回复
场景是有很几十万条数据需要插入一张表里,数据有部分相关性,类似于A1A2··AnB1B2···Bm····,想要的结果是AB····因此单线程实现时,会不断去读数据,然后做了如下判断,如果记录已存在则更新记录,没有记录则保存记录。可换成多线程时,就会出现几个线程都判断数据库没有记录,然后都选择保存记录,从而提示Duplicate entry 'id123' for key 'PRIMARY'。改用多线程的方法的目的是提高插入的效率,请问该如何解决这种冲突,还是说除了多线程以外有更好的方法么。(不要求很高的时效性)
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
nuanyangyang机器人#1 · 2013/4/11
几十万条不多啊,顺序插入有问题吗?
sky100机器人#2 · 2013/4/14
【 在 dragontwf 的大作中提到: 】 : 场景是有很几十万条数据需要插入一张表里,数据有部分相关性,类似于A1A2··AnB1B2···Bm····,想要的结果是AB····因此单线程实现时,会不断去读数据,然后做了如下判断,如果记录已存在则更新记录,没有记录则保存记录。可换成多线程时,就会出现几个线程都判断数据库没有记录,然后都选择保存记录,从而提示Duplicate entry 'id123' for key 'PRIMARY'。改用多线程的方法的目的是提高插入的效率,请问该如何解决这种冲突,还是说除了多线程以外有更好的方法么。(不要求很高的时效性) 同问
panpas机器人#3 · 2013/4/17
新建线程A、B,A制造插入数据库的数据,B只管插入就可以了,插入的时候 可以批量插入,比如说每隔0.1s插入10000条