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中存在非法字符(晕倒),后来改为全部在内存中设置;
- 多线程并发查询的设计抽象不足,应用场景改变时需要频频修改,继续改进中……
- 多线程适用于有多个设值线程的情况。
分享到:
相关推荐
### 数据库查询优化的核心知识点 #### 一、查询优化的重要性 数据库查询优化是数据库管理系统(DBMS)中的关键组件,其目标在于选择最有效的查询执行计划,以最小化资源消耗(如CPU时间、I/O操作)并提高响应速度。...
Oracle查询优化是数据库管理中的重要环节,...总之,Oracle查询优化涉及到多方面的知识点和实际操作技巧。本文件通过介绍具体的优化技巧和案例分析,帮助读者理解并掌握这些技术,以提高Oracle数据库查询的效率和性能。
本文将深入探讨MySQL中的查询优化过程及其相关知识点。 #### 二、查询优化流程 MySQL查询优化主要分为以下几个步骤: 1. **条件优化**:优化器首先会对查询中的条件进行简化,例如将表达式“a = 1 AND b > a”...
#### 二、MS SQL Server查询优化核心知识点 ##### 1. **减少不必要的查询** - **避免冗余查询**:确保每次查询都是必要的,避免重复执行相同或相似的查询。 - **利用缓存机制**:对于频繁使用的查询结果,可以...
本文将基于《Oracle查询优化改写技巧与案例》这一主题,详细介绍其核心知识点及其应用场景。 #### 一、Oracle查询优化基础 ##### 1.1 查询执行计划 - **定义**:查询执行计划是指Oracle数据库执行SQL语句的具体...
本文将围绕“informix数据库sql查询优化”这一主题展开讨论,重点介绍SQL单表查询优化的相关知识点。 #### SQL单表查询优化概述 单表查询是指仅涉及一个表的SQL查询语句。虽然这类查询通常比多表连接查询简单,但...
总结来说,空间数据库查询处理与优化是一个涉及数据操作、索引构建、查询优化、分布式处理等多个层面的复杂领域,目标是有效地管理和检索地理空间信息,以支持地理信息系统(GIS)和其他地理位置依赖的应用。
通过上述对 MySQL 高级优化查询的深入解析,我们不仅了解了查询缓存的原理及其工作流程,还探讨了 MySQL 的内部机制,包括存储引擎、锁机制、索引管理和查询优化器等关键组件。此外,还介绍了一些额外的优化策略,如...
以下是对Oracle查询优化的一些核心知识点的详细解析: 1. **执行计划**:在Oracle中,执行计划是数据库执行SQL语句的具体步骤。通过`EXPLAIN PLAN`或`DBMS_XPLAN`包,我们可以查看SQL语句的执行计划,理解数据的...
查询优化器会基于统计信息对可能的执行计划进行评估,并根据成本模型选择最佳的执行路径。SQL Server 2000使用基于成本的优化器(CBO),它会估算不同执行路径的成本,然后选择成本最低的计划执行。 5. 使用查询...
在本节中,我们讨论了 MySQL 查询性能优化的几个重要方面,包括查询优化的重要性、查询优化技术、MySQL 查询优化工具等。通过了解这些知识点,数据库管理员可以更好地优化 MySQL 查询性能、提高数据库的响应速度、...
一、SQL Server查询优化 1. **索引优化**:索引是提升查询速度的关键。非聚簇索引用于快速查找特定值,而聚簇索引决定数据在表中的物理存储顺序。创建合适的索引,尤其是在经常用于WHERE子句的列上,可以显著减少...
2. **查询优化**:在数据库系统中,查询优化指的是根据数据库的统计信息和索引情况,选择一种或多种效率最高的数据检索方式的过程。优化器是数据库管理系统(DBMS)中负责这一任务的关键组件。 3. **过滤器**:在...
在处理MySQL海量数据查询优化时,我们需要关注的策略包括但不限于以下几点: 1. 优化索引使用:避免全表扫描至关重要。为此,应当在查询条件(WHERE)和排序(ORDER BY)涉及的列上创建索引。索引有助于数据库管理...
- 维护准确的统计信息有助于查询优化器估算行数,从而选择更好的执行计划。 - 定期使用`UPDATE STATISTICS`命令更新统计信息。 6. **临时表和表变量**: - 在大量数据处理时,临时表和表变量可以提高性能,但需...
本文将从几个方面对Oracle查询调优进行详细的解析,包括但不限于SQL语句优化、索引管理和统计信息收集等关键知识点。 #### 一、SQL语句优化 SQL语句是数据库操作的核心,其编写质量直接影响着查询性能。优化SQL...
在本节中,我们将深入探讨 SQL 查询优化的相关知识点。SQL 查询优化是数据库性能优化的关键步骤,旨在提高数据库的查询效率和性能。 查询执行过程 查询执行过程是 SQL 查询优化的基础。整个过程可以分为以下几个...
《关系查询处理与查询优化》的学习教案主要涵盖了关系数据库系统中的关键概念,包括查询处理的步骤、查询优化的重要性以及优化的策略。以下是这些知识点的详细解释: **8.1 关系数据库系统的查询处理** 1. **查询...
从提供的文件信息中可以看出,这是一个关于Oracle数据库查询优化的资料。接下来,我将详细解释这个领域的一些关键知识点,并结合查询优化的概念来深入探讨。 Oracle优化查询指的是在Oracle数据库中,通过一系列的...