JAVA循环大量插入数据库

0丁叮0 工程师  2017-11-06 03:29:30
加精
我目前做的功能是这样的,JAVA开启一个服务,这个服务长时间运行在服务器,解析固定文件夹里的文件,解析之后插入到数据库中(sql Server或Oracel),每个文件里大约会有100-500条记录需要插入到数据库,每天大约会有10W-20W个文件的数据需要插入到数据库中,就是每天大约需要插入2000W-3000W万的数据到数据库中。目前设计是每天自动创建一个表,插入方式是JDBC的PreparedStatement批处理模式,但是每解析一个文件就需要提交一次,来保证数据完整。但是每天的表插入到1000W的数据之后感觉再插入就会很慢,请问有什么好的方式能解决吗。
...全文
9346 3 收藏 28
写回复
28 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Howe~zZ 2018-06-27
只能重新分表,你这样弄数据太夸张了
回复
gh1223181184 2017-12-04
bulk insert
回复
baidu_39257480 2017-11-27
要考虑数据分块存储,还有多进程问题
回复
feng1234ss 2017-11-22
不错学习学习
回复
sz_jack 2017-11-18
现在已经是一天一个表,表可以不用分了,还是看看cup/ios是够了,能不能多起个线程解析文件插入库操作,解析完成时候后移动到别目录下,目前的数据估计是一个小时需要处理100万数据。一分钟一万多,一个线程的最大是多少,而已还有看文件行的多少。还是优化后,试试多线程,
回复
c782699991 2017-11-16
回复
huibinwei 2017-11-14
可以用一个缓存,先存一下,然后在插入吗
回复
4qw 2017-11-14
oracle有一个外部表的机制,就是建立一个表,这个表的数据是链接一个外部路径下的结构化的文件,这样子就可以直接解析到该文件了,然后将这个外部表解析出来的 数据插入到另外一个表里就行了;考虑到数据插入效率,可以建立一个分区表,可以按照每天进行分区,插入时数据就会自动插入到对应的分区中; 这种操作模式依赖的是数据库本身的机制,就不用通过编码语言进行相关设置了...至于多了文件,是否需要建立多个外部表就需要自己去百度了
回复
jackeclipse 2017-11-13
你的表是不是有索引?大量插入时,先插入再建索引
回复
天台的故事 2017-11-11
分表吧,数据量有点大啊
回复
龙爷一号 2017-11-11
顶一个县!!!!!!!!!!!!
回复
zdl3979375 2017-11-11
顶!!!!!!!!!!!!!!!!
回复
qq_25427647 2017-11-09
好东西,真心感谢
回复
吉普赛的歌 2017-11-09
送你一点好东西, http://blog.csdn.net/educast/article/details/72880224 可惜你结贴了, 俺拿不到分了……
回复
ljheee 2017-11-09
分表吧,数据量有点大啊
回复
astroboy0207 2017-11-08
大量插入数据,最好先不要加索引和主键,等插入完成后如果需要再去添加
回复
你每天可以创建两张表,插满1000w用另一张表。其次每50条左右,提交一次事务,避免占用太大的内存,影响系统运行。
回复
qq_36580640 2017-11-08
1、建立小时的分表 2、用es存储数据
回复
叮咚呛咚呛 2017-11-08
分库分表 你值得拥有
回复
这个逻辑,除了jdbc技术方面的优化之外,业务本身就会是瓶颈,所有的数据都放到一个表,这肯定会影响效率的, 最快速解决的方法就是在数据库,将数据库分成多表,或者多库,比如说 根据时间分成上午和下午两个表,这明显就会提升效率,当然这这是一种举例,具体的还得和业务结合,大量数据存一个表 这种方式肯定是需要改善的,
回复
加载更多回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2017-11-06 03:29
社区公告
暂无公告