最近在弄一件任务,要求测试一下从文本中读取数据,然后向mysql表中插入。要求用JDBC线程导入。要求效率。
环境说明:
数据量 : 10058624条 (大约一千零6万条数据,本地机器运行)
数据大小 : 1093.56MB (1.1G)
MYSQL版本 : 5.7 (装在服务器上)
MYSQL引擎: InnoDB
MYSQL未做任何优化,配置如图:
一、数据文件读取
因为项目要求读取的是dbf文件,数据量比较大,所以单独写了一个程序,测试一下数据读取用多久。
未做任何保存、配置,只是将数据循环遍历一边。 计算出时间:
数据量 :10058624条 (大约一千零6万条数据 ,截图中没有显示)
读取用时 : 19s
二、 代码优化。(mysql配置不动)
方式一: 传统方式
输出时间:
Program running index : 10000 use : 7 s
Program running index : 20000 use : 15 s
Program running index : 30000 use : 21 s
Program running index : 40000 use : 28 s
Program running index : 50000 use : 34 s
Program running index : 60000 use : 41 s
Program running index : 70000 use : 48 s
Program running index : 80000 use : 54 s
Program running index : 90000 use : 61 s
Program running index : 100000 use : 69 s
Program running index : 500000 use : 346 s
Program running index : 1000000 use : 693 s
Program running index : 1500000 use : 1042 s
Program running index : 2000000 use : 1402 s
Program running index : 2500000 use : 1757 s
总结:
运行很慢,平均插入一万条需要耗时7s,
那么一千万条, 预计需要7000s 。 ( 117 min , 即将近两个小时 。。 )
方式二: 将sql中的多个value值,拼在一起,进行插入操作。
实例:
insert into `