babyCaiChong 2016-06-22 03:21 采纳率: 0%
浏览 2100

多线程并发读取文件并存入DB库?

和大家讨论下,如何实践多线程读取多个external file,并将相关数据存入DB?

这个IO File会有多条记录。每一个条记录,代表一个行为。如下:
ActionCode AcctNo Name .....
01, 1221, Tom
02, 1221, Tomcat
01 ,1222, James

ActionCode代表这行记录的行为,
01:create也就是增加一行记录。02代表update
AcctNo 代表Key

第一行:代表增加一个记录。账号为1221. Name:Tom
第二行,表明更新账号1221的Name,从Tom变更为Tomcat
第三行,创建账号,名为James

同时并发读取多个文件。多个线程又同时读取一个文件。将相关结果写入DB

我凌乱的思路,让大家见笑了:

比如:数据库连接池有20个连接。有N个File,每个file 10000+ records
1)如何给这N个File分配线程数呢?是不是应该考虑到数据库连接池的大小呢?会不会导致数据库读写阻塞呢?
2)ReentranReadWriteLock可以并发读文件。但是文件中的记录是有关联的。比如第2行记录不能先于第一行。
3)基于②是不是可以用Cyclicbarrier,写读取01(create),然后再进行02(update)

想和大家讨论一下思路。和代码实现无关系。希望能得到您的指点。我将十分感谢您的帮助。谢谢!

  • 写回答

1条回答 默认 最新

  • oyljerry 2016-06-22 06:43
    关注

    数据库连接池要考虑,因为它能同时进行数据库操作的连接是有限的,太多并发修改数据库会导致写入性能等下降。

    评论

报告相同问题?

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 spring后端vue前端
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题