2007-11-03
多线程并发访问mysql 插入记录很慢
关键字: java 并发 多线程 mysql
手头正在写的程序中有多线程(线程数<10)对数据库(用的jdbc但没用连接池)同时插入记录(每次<2000条),同时隔一段时间还会提取一些记录。
我们用的是固定大小的线程池(newFixedThreadPool),一个任务执行完了就复用一个线程执行另一个任务
因此 代码写成了这样:
但是在测试中发现 即使将gatherNum设为1,对执行sql语句的程序做同步化 ,数据插入数据库的速度也很慢 有时1,2秒才插入一个记录
将多线程改为直接由main跑一次任务 记录很快插入数据库
所以很疑惑
PS:执行sql语句的程序每个线程都会new一个 所以本来没想同步 但想问一下 我们对getcon,closestatment等等做了一个简单的包装 ,如果不对getcon作同步话的话 mysql会有什么反应?
我们用的是固定大小的线程池(newFixedThreadPool),一个任务执行完了就复用一个线程执行另一个任务
因此 代码写成了这样:
final ExecutorService Gathers = Executors.newFixedThreadPool(gatherNum);
while(true)
{
Gathers.execute(new Gather());
}
但是在测试中发现 即使将gatherNum设为1,对执行sql语句的程序做同步化 ,数据插入数据库的速度也很慢 有时1,2秒才插入一个记录
将多线程改为直接由main跑一次任务 记录很快插入数据库
所以很疑惑
PS:执行sql语句的程序每个线程都会new一个 所以本来没想同步 但想问一下 我们对getcon,closestatment等等做了一个简单的包装 ,如果不对getcon作同步话的话 mysql会有什么反应?
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 2471 次
- 性别:

- 来自: 南京

- 详细资料
搜索本博客
最新评论
-
不解的内存泄露
楼主解决了吗?
-- by jems -
不解的内存泄露(2)
我在做一个Spider的时候,也是发现内存泄露问题。 困扰了我两个星期,后来发现 ...
-- by Autinhorse -
不解的内存泄露
我在做一个Spider的时候,也是发现内存泄露问题。 困扰了我两个星期,后来发现 ...
-- by Autinhorse -
很希望这个版的事实版主来 ...
waldenlake 写道ywlqi 写道应届生有如此经历暴强了,不知道实际怎样 ...
-- by ywlqi -
很希望这个版的事实版主来 ...
成功了是自己努力,不成功是因为别人不公平。 仔细看看这个版里的口径,就感觉都是事 ...
-- by bcccs






评论排行榜