首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Thread_跨节点会合查询

2012-12-22 
Thread_跨节点集合查询项目中数据库进行了水平切分,为了处理跨节点集合查询,采用了多线程并发操作的方式来

Thread_跨节点集合查询

项目中数据库进行了水平切分,为了处理跨节点集合查询,采用了多线程并发操作的方式来处理,并且对各线程执行的结果进行操作,如果是返回结果集,则合并排序;如果是聚合操作,则求和。个人觉得该实现方式很有代表性,所以抽取了原型实现备忘。

?

集合处理:

?

import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutorCompletionService;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class FixedConnectionPool {private int cpuCoreNumber = 2;private ExecutorService exec;private CompletionService<Object> completionService;public FixedConnectionPool(){this.cpuCoreNumber = Runtime.getRuntime().availableProcessors();//this.exec = Executors.newCachedThreadPool();this.exec = Executors.newFixedThreadPool(cpuCoreNumber);this.completionService = new ExecutorCompletionService<Object>(exec);}public int getCpuCoreNumber() {return cpuCoreNumber;}public void setCpuCoreNumber(int cpuCoreNumber) {this.cpuCoreNumber = cpuCoreNumber;}public ExecutorService getExec() {return exec;}public void setExec(ExecutorService exec) {this.exec = exec;}public CompletionService<Object> getCompletionService() {return completionService;}public void setCompletionService(CompletionService<Object> completionService) {this.completionService = completionService;}}

?

1 楼 zean 2012-09-19   这个问题很久以前就想过,如果多个节点返回的结果集都很大,怎么排序? 2 楼 charles751 2012-09-19   zean 写道这个问题很久以前就想过,如果多个节点返回的结果集都很大,怎么排序?

结果集大也没办法,汇总后排序才能保证排序的正确性。 3 楼 charles751 2012-09-19   一般都是分页显示,每页显示的记录数不会很大,所以一般情况下结果集不会很大。 4 楼 dacoolbaby 2012-09-20   觉得用Java进行排序效率很低。
一般是不是应该在数据库前面再建一个像memcache这样的东西? 5 楼 charles751 2012-09-20   dacoolbaby 写道觉得用Java进行排序效率很低。
一般是不是应该在数据库前面再建一个像memcache这样的东西?


怎么得到的java排序效率低?

你打算用memcached做数据缓存还是什么?

热点排行