我是靠谱客的博主 长情奇异果,这篇文章主要介绍多线程并发访问mysql 插入记录很慢,现在分享给大家,希望可以做个参考。

手头正在写的程序中有多线程(线程数<10)对数据库(用的jdbc但没用连接池)同时插入记录(每次<2000条),同时隔一段时间还会提取一些记录。

我们用的是固定大小的线程池(newFixedThreadPool),一个任务执行完了就复用一个线程执行另一个任务
因此 代码写成了这样:
[code]
final ExecutorService Gathers = Executors.newFixedThreadPool(gatherNum);
while(true)
{
Gathers.execute(new Gather());
}
[/code]


但是在测试中发现 即使将gatherNum设为1,对执行sql语句的程序做同步化 ,数据插入数据库的速度也很慢 有时1,2秒才插入一个记录
将多线程改为直接由main跑一次任务 记录很快插入数据库

所以很疑惑

[color=red]PS:[/color]执行sql语句的程序每个线程都会new一个 所以本来没想同步 但想问一下 我们对getcon,closestatment等等做了一个简单的包装 ,如果不对getcon作同步话的话 mysql会有什么反应?

最后

以上就是长情奇异果最近收集整理的关于多线程并发访问mysql 插入记录很慢的全部内容,更多相关多线程并发访问mysql内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部