MySQL中插入大量数据的问题

ningandjin 2009-02-10 02:39:02
各位高手,我写了一段程序,生成一个字符串,然后插入到数据库中,这个程序有时会执行上千万次,但是每次执行到10多万次的时候就报了一个outOfStackException,请问一下大家都怎么处理MySQL中插入大量数据的问题?
...全文
725 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小赛赛top 2010-02-06
  • 打赏
  • 举报
回复
循环内建立连接是不行地
jnt52 2009-02-14
  • 打赏
  • 举报
回复
可以使用导文件方法解决大数据量插入问题.

MYSQL中从文本文件导入数据到数据库中
1)注意文件格式要和字段名顺序一致每个值以TAB分割。
mysql -uroot -proot test_databaseName -e "LOAD DATA LOCAL INFILE 'input_datafile.txt' into table test_tableName(userName,data_num)";
ningandjin 2009-02-12
  • 打赏
  • 举报
回复
简单说一下我在做的事吧

for(long i=0;i++,i<1000000){
insertIntoDB(i);
}
在insertIntoDB方法中,我建立了一个到MySQL连接,调用了一条插入语句直接使用的insert into table values().然后就报outOfStackException了。我以前觉得可能是数据库的缓冲区不够了,就说每做10000次就commit一下,但是还是不行。

for(long i=0;i++,i<1000000){
insertIntoDB(i);
if(i%10000==0){
commitDB();
}
}
pangpangxu 2009-02-12
  • 打赏
  • 举报
回复
不知道你的sql语句怎么写,或这插入数据设计到的索引更行情况
还有一个更新方式,是有关insert语句的写法:

inert into table_name values(...),(...),(...)

这样写可以减少索引更新的IO

当然这样是揣测索引更新I0频繁引起
ningandjin 2009-02-12
  • 打赏
  • 举报
回复
可是我的数据是一边生成一边插入的。在一个循环里面搞定的。也有试过当循环到10000的倍数的时候就执行一次commit,不过好像没有用。
pangpangxu 2009-02-10
  • 打赏
  • 举报
回复
可以考虑在应用程序中分批次执行插入,同时批次处理间可以考虑设置sleep

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧