- A+
所属分类:Java多线程
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查询
like语句不管设不设索引都需要1.3s左右
结论
上面几个场景下,
1.用普通多线程和用线程池的耗时差不多,看不出线程池的优势。
2.表的数据量很大时,必须得设索引,不然查询实在太慢
3.大数据量时不管设不设索引用like都太慢