项目中遇到一个并发性能的问题:
需要对3张表执行操作,3张表没有外键关系;执行操作都为查询--添加或更新。
最初设计为一个线程池,对3张表顺序操作。业务判断+数据库操作耗时在20-30毫秒;
后来我想3张表没什么关系,改成并行操作应该要效率要高点吧,于是就再写了2个相同的线程池,总共3个线程池,一个线程池执行一张表。
问题来了,我发现每一张表的业务操作耗时竟然比以前3张表业务判断+数据库操作时间还要高30-60毫秒;
我那个郁闷啊!并行居然比串行慢!
环境为32G内存、8CPU,hibernate+spring,声明式事务管理(自动提交),批量提交为100。
我想8CPU调度线程应该很快的,并且业务判断都是相同的,未作修改,耗时应当主要是出在数据库操作上。
我看mysql,一个线程池提交sql频率在1200-2000条/s,(好像是以秒为单位的)
改成3个线程池后居然很少能过1500条/s。
希望哪位大侠给点意见