免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3925 | 回复: 8
打印 上一主题 下一主题

Tomcat访问MySQL一次性插入2w记录遇到性能问题,帮解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-31 11:02 |只看该作者 |倒序浏览
10可用积分
2w条记录存在用户上传得excel文件中,读取该2w条记录,并且插入到数据库中,可是每次操作都是OutofMemery

请问如何解决?我将2w记录拆分成几个insert语句还是不行,机器性能比较差一点,只有512m内存,

如果没有解决方案,提些建议也行,谢谢!

论坛徽章:
0
2 [报告]
发表于 2008-12-31 11:36 |只看该作者
1。扩大内存;
2。分割成更小的INSERT,比如100条,然后循环200次,呵呵。

论坛徽章:
0
3 [报告]
发表于 2008-12-31 12:10 |只看该作者
上面的方法似乎解决不了问题,扩大内存目前看来是不可能的,1代内存很贵,

第二种方案,我已经逐步尝试,一直试到一个insert只有20条记录,在我本地可以,换到刚才说的那个服务器还是不行了

论坛徽章:
0
4 [报告]
发表于 2008-12-31 17:53 |只看该作者
如果在表里面建了很多索引  插入会变慢  

内存加大一些

论坛徽章:
0
5 [报告]
发表于 2009-01-02 17:49 |只看该作者
只有一个id索引

论坛徽章:
0
6 [报告]
发表于 2009-01-02 17:52 |只看该作者
谁来帮个忙,版主呢?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2009-01-02 18:48 |只看该作者
你这样子操作吧:
1. Excel只给20条,然后全部读取插入,OM么?
如果不,继续,这次给40条,然后全部读取插入,OM么?
一直到OM为止,把这个时侯的数目告诉我们,谢谢!

然后OM再做操作:
这次,先读取一半,再插入,OM么?
如果OM,则读取一半的一半,再插入,OM么?直到找到此时的最小值,可以插入而不OM。
如果不OM,则读取一半再加上一半的一半,再插入,OM么?直到找到此时的最大值,可以插入而不OM。
告诉我们你得到的是最大还是最小?具体是多少?

然后,等我们来继续解答吧。

论坛徽章:
0
8 [报告]
发表于 2009-01-05 17:28 |只看该作者
7楼,你的方案看起来很专业,能否解释一下呢?
这几天没来,想了另一种方案,代码改动比较大了,所以没尝试你的方案。
按你说的,如果在上面操作中1.5w OM了,下面用半分法操作不也是接近1.5w左右OM吗?
不明白,解释一下吧,感觉应该还有后文


我的临时方案是:在tomcat中另起一个进程,用这个进程去做插入操作,
而不是在tomcat中直接访问数据库。

论坛徽章:
0
9 [报告]
发表于 2009-01-06 16:52 |只看该作者
我提个建议,不知道楼主是否乐意去试试。
在上次完EXECL后,将这个EXCEL变成MYSQL脚本,然后利用SHELL或者.bat将这个脚本执行能达到你的目的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP