mysql添加百万级数据

頸頸滴 发布于 2012/04/26 13:06
阅读 1K+
收藏 3
jdbc连接数据库,百万级大批量数据添加,怎样可以高效的实现.
加载中
0
蟋蟀哥哥
蟋蟀哥哥
no index,no innodb
0
頸頸滴
頸頸滴

引用来自“蟋蟀哥哥”的答案

no index,no innodb

就一张表,表的设计可以先不考虑,主要从java代码着手

我的设计是: 读取数据, 将读取的数据放入list集合,每到1000条的时候调用存储过程向数据库中插入一次, 自己测试了下,这样做速度还是很慢.

0
逝水fox
逝水fox

先不要创建key和主键,等最后再创建。

插入的时候使用预编译语句进行批更新(batch), 这个可以查Java API,就不细说了。也可以用:

insert into t_table values(....), (....)  这种一次插入多条的语句,不过个人感觉没预编译好,而且容易因为请求包过大被MySQL限制。

之前试过为搞了1亿条测试数据,大约挂了一晚上,8个小时左右。

另外,原因不明,改用四个线程用四个连接同时插,效率反倒比单线程低。

0
頸頸滴
頸頸滴

引用来自“逝水fox”的答案

先不要创建key和主键,等最后再创建。

插入的时候使用预编译语句进行批更新(batch), 这个可以查Java API,就不细说了。也可以用:

insert into t_table values(....), (....)  这种一次插入多条的语句,不过个人感觉没预编译好,而且容易因为请求包过大被MySQL限制。

之前试过为搞了1亿条测试数据,大约挂了一晚上,8个小时左右。

另外,原因不明,改用四个线程用四个连接同时插,效率反倒比单线程低。

问下 你当时每条数据有多少字节?

0
逝水fox
逝水fox

引用来自“頸頸滴”的答案

引用来自“逝水fox”的答案

先不要创建key和主键,等最后再创建。

插入的时候使用预编译语句进行批更新(batch), 这个可以查Java API,就不细说了。也可以用:

insert into t_table values(....), (....)  这种一次插入多条的语句,不过个人感觉没预编译好,而且容易因为请求包过大被MySQL限制。

之前试过为搞了1亿条测试数据,大约挂了一晚上,8个小时左右。

另外,原因不明,改用四个线程用四个连接同时插,效率反倒比单线程低。

问下 你当时每条数据有多少字节?

全部插完数据文件差不多14G,表没有设定压缩的,有一些昵称啊,地址之类的文字字段在里面。
返回顶部
顶部