ZPY博客

JAVA多线程插入mysql 100万条数据性能测试

insert 1万条

不使用多线程 用时:127709ms 127s

普通多线程 10个线程 开始13:15:03.679 结束13:15:10.197 用时7s

使用线程池newCachedThreadPool 开始13:01:55.820 结束13:02:02.337 用时7s

insert 10万条

普通多线程 10个线程 开始13:17:16.616 结束13:18:15.397 用时59s

使用线程池newCachedThreadPool 开始13:31:03.935 结束13:31:50.081 插入3万条后数据库连接报错 47s

※这里估计是并发超过了mysql的最大承受范围把mysql搞挂了。。后面都改用newFixedThreadPool了。
使用线程池newFixedThreadPool(10) 开始13:42:32.966 结束13:43:35.524 用时63s

insert 100万条

普通多线程 10个线程 开始13:50:54.720 结束14:02:04.594 实际110万条 用时11m10s

使用线程池newFixedThreadPool(10) 开始14:06:18.472 结束14:16:50.084 用时10m32s

100万条数据时,按title查询

不设索引时,耗时1.3s
设置索引后,耗时0.01s

like语句不管设不设索引都需要1.3s左右

 

结论

上面几个场景下,

1.用普通多线程和用线程池的耗时差不多,看不出线程池的优势。

2.表的数据量很大时,必须得设索引,不然查询实在太慢

3.大数据量时不管设不设索引用like都太慢