java如何多线程查询5000W数据?

捡到一毛线 发布于 2013/12/13 11:58
阅读 10K+
收藏 0

一张表有5000W数据;

我的方案是:

1、数据库连接池:最大数量100条;

2、线程池:线程池开200线程数,每条线程查询10W条数据;比如:第一个线程查询【1,100000】之间的数据,第二个线程查询【100001,200000】之间的数据....

3、在线程启动的run方法里获取数据库连接,并执行sql,对结果集遍历。

实施结果:

很慢,多线程并行执行到sql时,由于sql太多,等待好长时间,

求大神帮助啊!

加载中
0
excepiton
excepiton
问题是在数据库的IO上吧,多线程解决不了你的问题
苏大泉
苏大泉
回复 @捡到一毛线 : 去找管理员换设备
捡到一毛线
捡到一毛线
我也发现是数据库io的瓶颈,那有什么高效的解决办法不?
0
beyondforever68
beyondforever68
这是要干嘛?把5000w数据加载到内存?
捡到一毛线
捡到一毛线
对每条记录做lucene索引
0
huan
huan
你知道数据库是干嘛用的么?
0
amonxu
amonxu

数据库的IO才是王道。好比你现在要打水,你用10个盆去接水,可是水管只有那么大啊。

amonxu
amonxu
回复 @捡到一毛线 : 首先,你要这5000万数据干吗,第二,这5000万数据的实时性有多强等等。你最好先描述清楚你的需求。
amonxu
amonxu
回复 @程序猿pk公务猿 : 猿哥蛋定,中国梦,王道梦。
程序猿pk公务猿
程序猿pk公务猿
什么玩意就王道王道的,就腻歪听着个词.
ericsoul
ericsoul
形象!
捡到一毛线
捡到一毛线
那我该怎么做呢?
0
南湖船老大
南湖船老大
方向错了,再怎么走都是错的
苏大泉
苏大泉
回复 @捡到一毛线 : 你还没理解你的需求 描述的问题都不完整
捡到一毛线
捡到一毛线
老大,帮帮忙啊。那就现在我这种情况,如和解决5000W数据甚至更多的数据呢
0
阿诶么刚阿
苏大泉
苏大泉
不对吧
0
beyondforever68
beyondforever68
我觉得这种问题的话,在程序启动是加载一次完整的数据,之后可以考虑定时扫描并加载有更新的数据,另外数据量太大,查询时,只查询必须的数据,应该效率也会有些提升。启动时加载全部数据只是启动慢一些应该可以接受
0
zqq90
zqq90

这种案例 交给数据库去做啊 复杂的可以写存储过程 简单的写个SQL语句

为啥要交给Java来处理数据?

0
d
dbtop

CPU有几个内核,工作线程就不应该超过这一个数,超过的越多,速度不升反下降。

还是把为啥要这样做写出来,大家看看这样帮你提方案吧。

返回顶部
顶部