Informix Online数据库的查询优化策略

Informix-Online 动态服务器(IDS,Informix-Online Dynamic Server)作为Informix数据库产品技术的核心,以其动态可伸缩体系结构,高效的并行处理能力、共享内存技术及易管理性等特点,将硬件资源发挥得淋漓尽致。当前IDS V7正广泛地应用于我国金融、邮政、电信等行业的关键系统中,随着应用的不断深入,数据的积累,查询的复杂化,查询速度会变慢,致使响应时间过长。许多用户将其归结为硬件的原因,于是升级改造,或重新投资,数据库的调优并没有引起足够的重视。这其实是一种浪费,与国外发达国家轻硬件、重应用的思路正好相反。实践表明,数据库的不合理配置和不适当优化是其性能下降的主要因素。实施对IDS上数据库的管理维护、性能调优是系统管理员的主要工作,而能否得以良好的查询响应则集中体现了数据库的性能,因此也是调优的重点。从系统管理的角度,我们可以设置多线索、合理分配共享内存空间、建立数据库和表的分布及分片管理等来加快查询速度,但最终还要基于对数据库本身的全面理解,因为数据处于不断的变化和积累之中,并且随着应用的深入查询将日趋复杂化。本文从数据管理的角度阐述了几种查询优化策略,实际应用中有很好的收效,现说明如下。

一、查询的分类及要求

针对语句中所涉及的数据库表的数目查询可分为:单表查询、多表查询、联合查询、子查询等,多表查询建立在多张表的连接之上,分嵌套循环、合并排序、哈希连接三种方式,最为复杂,也是调优的重点。目前数据库的应用分为联机事务处理(OLTP,Online Transaction Processing)和决策支持系统(DSS,Decision Support System)两大类型,它们对查询的要求不尽相同。OLTP主要涉及单张表,SQL语句简单,数据按索引读取,查询行数少,对响应的时间要求非常苛刻,常在秒级或以下,多用于在线实时业务;DSS涉及多张表之间的连接查询,SQL语句复杂,数据按物理顺序读取,查询行数多,响应时间长,多用于建立在数据仓库技术之上的复杂的数据分析。但无论何种情况,我们都希望最快的响应速度,这也是调优的最终目标。

二、查询的优化策略

1.充分利用查询优化器

查询优化器提供了数据查询的优化策略分析和选择方式,通过设置相关参数,优化器能够选择最佳的连接策略,并在所有的查询路径中找出一条最优路径。选择良好的路径是查询优化中至关重要的一环,一条好的路径可以扫描最少的记录,以最少的磁盘I/O得到正确的查询结果。可通过以下步骤进行。

(1)设置连接策略

通过修改配置文件$ONCONFIG中的OPTCOMPIND参数值来实现。

OPTCOMPIND 0:在连接中优化器只选择索引连接。

OPTCOMPIND 1:若事务处理为可重复读模式(Repeatable Read),则选择索引策略,否则,优化器自动选择开销最低的连接策略。

OPTCOMPIND 2:优化器自动选择开销最低的连接策略。应尽量选择该参数。

(2)设置查询优化的模式

也即选择最优的查询路径,通过执行以下SQL语句来实现,格式为:

SET OPTIMIZATION [ HIGH | LOW | FIRST_ROWS | ALL_ROWS ]

其中,HIGH是缺省选项,表示对所有查询路径都进行检测,从中选择最优。

LOW表示采用深度优先法仅在部分路径中选择最优,即在每次连接比较中,遇到最优路径就继续深入而滤掉非最优路径,特点是优化时间短,但路径准确率低。

FIRST_ROWS和ALL_ROWS是自IDS V7.3开始增加的新选项,无论对OLTP还是DSS都非常有用。传统的查询(即ALL_ROWS方式)一次将所有查询结果输出到共享内存缓冲区中,时间的消耗非常大,然而实践表明,大部分用户仅关注最初的几屏输出内容,因此FIRST_ROWS选项为我们提供了很好的选择。FIRST_ROWS指导优化器选择一条查询路径,使其只输出填满一个缓冲区的记录数,如果用户继续查询则继续执行,这样避免了不必要的输出结果和时间浪费,也使查询速度大大提高。

由此可见,优化器的丰富功能为我们提供了灵活的手段,管理员可以根据不同应用情况选择最佳的方式,既能达到最佳的查询效果,又能将由此而造成的系统开销降至最低。

时间: 2024-10-06 22:58:24

Informix Online数据库的查询优化策略的相关文章

在JSP中访问Oracle ,SqlServer ,DB2, Informix ,Access 数据库

access|js|oracle|server|sqlserver|访问|数据|数据库 在JSP中访问Oracle ,SqlServer ,DB2, Informix ,Access 数据库现在有好多初学jsp的网友经常会问数据库怎么连接啊,怎么老出错啊?所以我集中的在这写篇文章供大家参考,其实这种把数据库逻辑全部放在jsp里未必是好的做法,但是有利于初学者学习,所以我就这样做了,当大家学到一定程度的时候,可以考虑用MVC的模式开发.在练习这些代码的时候,你一定将jdbc的驱动程序放到服务器的类

如何构建Informix分布式数据库访问

分布式数据库是在集中式数据库系统成熟技术的基础上发展起来的,它使物理分布的数据构成了一个逻辑整体.对用户来说,一个分布式数据库系统逻辑上就如同一个集中式数据库,用户可以在任何一个场地执行全局应用.Informix是一个具有跨平台.全功能的关系型数据库,它可在Online 7.1以上版本中将I-star等网络产品进行集成,并使其不但支持本地数据库,而且支持分布式数据库. 当前,银行.保险等金融行业均存在多业务处理系统,比如银行的综合业务.代理业务,保险的出单业务等,各业务系统常驻留于不同的主机上.

SQL Server与Oracle数据库在查询优化上的差异(一)

一般来说,Oracle数据库在大型数据环境下,其运行性能比SQL Server数据库效率要高.单从查询优化上讲,两者就有比较大的差异.下面,笔者将数据库查询优化的差异做一个描述,若有不准确的地方,还请大家批评指教. 一. 在数据库排序查询优化上的差异. 在讲解这个内容之前,为了读者能够清楚我讲的内容,我要先谈一个概念.命中率,它是指从内存中取得数据而不从磁盘中取得数据的比率.我们在前几篇文章中都提到过,当在数据库中查询数据时,数据库服务器都是先从内存中寻找数据.只有在内存中数据不存在的情况下,才

mysql-MySQL数据库表查询优化

问题描述 MySQL数据库表查询优化 假如一个表中有10亿行数据,要查询的数据位置随意,则做一次查询大约需要多久,该怎么样调高查询效率. 解决方案 使用集群吧.如果是单库基本上没什么提高的办法. 解决方案二: 通过数据库分库分表,可以提高一部分.可以先做做这个优化 http://wentao365.iteye.com/blog/1740874 解决方案三: 这种量级的表,估计无论怎样都比较慢吧能想到可能快点的办法就是 count(pk)

海量数据库的查询优化及分页算法方案_MsSql

海量数据库的查询优化及分页算法方案  原出处不详 摘自:www.21php.com 随着"金盾工程"建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种.各部门.与此同时,应用系统体系的核心.系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量.那么,如何实现快速地从这些超大容量的数据库中提取数据(查询).分析.统计以及提取数据后进行数据分页已成为各地系统管理员和数据库管理员亟待解决的难题. 在以下

海量数据库的查询优化及分页算法方案[转]

海量数据库的 查询优化及分页算法方案   随着"金盾工程"建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种.各部门.与此同时,应用系统体系的核心.系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量.那么,如何实现快速地从这些超大容量的数据库中提取数据(查询).分析.统计以及提取数据后进行数据分页已成为各地系统管理员和数据库管理员亟待解决的难题. 在以下的文章中,我将以"办公自动化&q

实例讲解MYSQL数据库的查询优化技术

mysql|数据|数据库|优化 数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行.企业.政府等部门最为重要的计算机应用之一.从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句.举例来说,如果数据的量积累到一定的程度,比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时.如果采用比全表扫描更好的查询策略,往往可

数据库的查询优化技术

数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行.企业.政府等部门最为重要的计算机应用之一.从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句.举例来说,如果数据的量积累到一定的程度,比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时.如果采用比全表扫描更好的查询策略,往往可以使查询时间降为几分钟,由此可见

实例讲解MySQL数据库的查询优化技术 (1)(2)

数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行.企业.政府等部门最为重要的计算机应用之一. 从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句.举例来说,如果数据的量积累到一定的程度,比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时.如果采用比全表扫描更好的查询策略,往往可以使查询时间降为几分钟,由此可