Demo版本中:查询2个信息点耗时在1-2分钟左右,考虑了以下策略进行优化,提升查询性能:
1、合并信息点,对于查询规则中从同一个库表条件相同的查询进行合并,调用查询接口,返回结果后进行恢复,为了满足后面的恢复,对于原来的信息点增加了两个字段:attachIndex和attachId,前者表示合并到的查询规则列下标,后者表示合并到的信息点唯一编号。
2、动态构建数据库连接池,备选下面两种方法:
- 以Hibernate配置文件为模板,应用C3P0数据库连接池,在内存中动态修改数据库相关连接的配置;
- 使用Java中的动态代理实现数据库连接池,参考[这里
]。
3、使用DB2的联邦数据库(需要付费插件)或者Oracle的DBLink映射远程数据库到本地,关联查询。
4、优化查询路由(不清楚)。
5、由于多个信息点是无关的,考虑采用多线程,别人的建议是:ThreadPool和WAS提供的TaskManager,后来使用了自己简单设计的一个多线程并发查询,简单说明如下:
- QueryUnit: 待查询信息点,至少包含属性:name, value和state(INIT, RUNNING, TIMEOUT, EXCEPTION, SUCCESS);
- BusiHandler: 查询逻辑,包含方法:public void query(QueryUnit qu) throws Exception;
- ConsumeThread: 取值线程,包括属性:boolean flag, List<QueryUnit> queryUnitList;
- ProduceThread: 设值线程,包括属性:ConsumeThread ct, QueryUnit qu, long lastQueryTime, long singleThreadTimeout等;
- ThreadManager: 线程管理器,包括属性:int singleTheadTimeout, int maxThreadCount, int circleCount, List<QueryUnit> quList等, 包括方法:public void boot(); public List<QueryUnit> getData(); List<Info> getSpecifiList(int begin, int size, List<Info> quList)等。
系统经过使用以上优化后查询42个信息点经过合并后为26个信息点(信息点本身的合并潜力很大),设置maxThreadCount=30,第一次查询耗时为5-8秒,以后耗时均在3秒以内。(以上数据均在P4 3.0、2G内存和Tomcat5.5环境下测试)
遗留问题:
- 采用Hibernate模板方式配置的数据库连接池在发布到WAS6.1时总是报错,提示在hibernate-template.cfg.xml中存在非法字符(晕倒),后来改为全部在内存中设置;
- 多线程并发查询的设计抽象不足,应用场景改变时需要频频修改,继续改进中……
- 多线程适用于有多个设值线程的情况。
分享到:
相关推荐
我们可以根据这些信息筛选出需要优化的SQL语句进行优化 SQL优化经验 大表缺索引---必要字段上建立索引 索引碎片--维护阶段定期检测索引是否有碎片,如果过多就要对索引重新组织和重建 索引失效或者没有使用...
5.1.3. 利用左深树、右深树、浓密树来进行查询优化的各自特点 29 5.1.4. 试解释影响并行数据库系统中并行算法性能的三个因数 30 5.1.5. 简述用爬山算法进行查询优化的基本思想 30 5.2. 下面是某个公司一个人事关系...
3.违章批量查询:支持多辆机动车违章查询,详细列出执法点地址和电话; 4.异地查询:支持查询异地违章信息,并提供违章处理地址。 更新内容: 1.更新车型库,车型更完善 2.优化查询机制,查询更精准 3.修复产品BUG
2、随时随地查询火车票代售点信息,查询结果直接显示在google地图上。 3、随时随地查询客运汽车最新动态信息(目前只支持昆明客运站,余票、票价、车次、发车时间等) 4、软件支持在线升级,并且会不断优化。 5、...
在数据查询中,从2008开始SQL Server提供了一个新的数据类型hierarchyid,专门用来操作层次型数据结构。 hierarchyid 类型对层次结构树中有关单个节点的信息进行逻辑编码的方法是:对从树的根目录到该节点的路径...
随着一个应用系统中数据的动态增长,数据量变大,数据库查询效率就会有所降低,应用系统的响应速度也随之减慢,尤其对于海量数据的管理和查询问题就更加突出,Oracle查询优化就显得尤为重要。 目前通用的数据库产品...
可以为用户提供更大的搜索空间,一些用户只知道一些信息的个别字而不知道自己要找的全部信息的话,系统就会自动执行模糊查询,查出数据库中所有与用户输入的信息有关的信息供用户选择进行重新查询。这样子用户就不必...
真实的MySQL面试题,涵盖基础查询、连接、聚合、事务、表设计等知识点,并具有一定的实际工作场景挑战性: 基础查询: 题目:查询员工表(employees)中薪资高于平均薪资的员工信息。 连接: 题目:查询员工表...
可以为用户提供更大的搜索空间,一些用户只知道一些信息的个别字而不知道自己要找的全部信息的话,系统就会自动执行模糊查询,查出数据库中所有与用户输入的信息有关的信息供用户选择进行重新查询。这样子用户就不必...
目前,各大城市公交四通八达,人们出行也越来越方便....城市公交查询系统应从符合操作简便、界面友好、灵活、实用、安全的要求出发,以优化查询结果删选合适的线路为根本出发点,来满足人们出行方便的需求。
第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...
可以为用户提供更大的搜索空间,一些用户只知道一些信息的个别字而不知道自己要找的全部信息的话,系统就会自动执行模糊查询,查出数据库中所有与用户输入的信息有关的信息供用户选择进行重新查询。这样子用户就不必...
3.4 通常联接查询比子查询的效率要高很多 7 3.5 用TABLE 索引(INDEX)栏位去做TABLE间的关联,可避免费时的全表扫描 7 3.6 在VIEW中尽量不要使用 PACKAGE/FUNCTION 来得到栏位值, 8 3.7 通过ROWID访问表 9 3.8 ...
因此,我们提出了一个框架,使社区管理能够允许社区成员共享可重复使用的知识点片段,以优化社区之间的查询处理。为了证明我们方法的可行性,我们提出了一个医疗保健社区基础设施来支持社区社区管理和查询以及利用...
数据库优化方案设计 XX信息管理平台从大型数据库环境四个不同级别的调整分析入手,分析数据库平台的系 统结构和工作机理,从九个不同方面设计数据库的优化方案。 对于数据库的数据优化,主要有四个不同的调整级别,...
26、域名删除查询(.com .net .org等国际域名删除时间,通常在域名到期后的第65或75天,凌晨2点30左右会删除国内域名的删除时间,通常在域名到期后的第15或16天,凌晨4:30会删除友情提示:域名删除时间仅供参考,...
在查看执行计划过程中如果有什么不明白的地方,可以点中“SQL信息按钮”,再在执行计划看不明白的地方点 击下,LECCO SQL Expert的上下文敏感帮助系统将提供执行计划该处的解释 <br> 优化模块的特点 <br> ...
在查看执行计划过程中如果有什么不明白的地方,可以点中“SQL信息按钮”,再在执行计划看不明白的地方点 击下,LECCO SQL Expert的上下文敏感帮助系统将提供执行计划该处的解释(如图7)。 优化模块的特点 LECCO SQL...
可以为用户提供更大的搜索空间,一些用户只知道一些信息的个别字而不知道自己要找的全部信息的话,系统就会自动执行模糊查询,查出数据库中所有与用户输入的信息有关的信息供用户选择进行重新查询。这样子用户就不必...