提高Informix数据库运行效率的策略与措施
Informix数据库利用索引提高查询效率
Informix 数据库利用索引提高查询效率如果查询结果仅为一行或很少几行时(高选择性highselectivity) ,利用索引进行查询会大大提高效率。
相比之下,如果没有索引,查询则只能顺序扫描整个表。
在OLTF环境下,事务处理在很大程度上依赖于索引。
只有在表很小时,才会顺序扫描表。
系统会根据SQL语句中的WHER子句判断是否使用索引。
顺序扫描表会使系统性能受到严重影响。
sysmaster 中sysptntab 表中的pf_seqscnas 列显示了所进行的顺序扫描。
SETEXPLAIF命令同样可以提供关于SQL语句如何访问数据库中的重要信息。
DSS环境中的应用经常会查询出大量数据 (低选择性lowselecviity),甚至整张表。
顺序扫描对于这样的查询更为适合,因为此时顺序扫描可以利用lightscan 。
lightscan 缓冲区位于共享内存的虚拟段与驻留段无关。
关于lightscan ,以后章节中还将详述。
建立索引的代价虽然索引可以很大地提高高选择性查询的性能,但维护这些索引是需要付出代价的。
以INSERT语句为例,在进行插入时系统首先将读取被插入表的索引以定位新记录关键字的位置。
然后系统在将新记录写入数据页的同时还必须将新索引项写入索引节点。
如果导致索引节点分裂,系统则必须多次写索引页。
与INSERT语句相似,DELETED句也要求读入整个索引以定位索引节点位置,并置上删除标志。
在删除索引时还需要处理索引节点合并、整理等问题。
在执行UPDATE!句时,必须首先定位并且删除旧的关键字然后插入新的关键字。
所以在UPDATED句必须两次读取索引。
在实际系统中通常把索引的根节点和第一级节点读入共享内存中,但如果需要访问更低层次的索引节点则必须进行磁盘操作。
索引类型通常建立分离索引 ( detached) 或基于表达式的索引分片( expressionbasedfragmented )。
分离索引和分片索引可以使得索引的extent 内页连续,因而能提高性能。
提高Infor mix数据库系统运行效率的途径
SN E_ P V 一e ,mt br p vs oe L C U_ P IG 0 #Inn z ol inm e o cu t n f o r i u f p o N A E G O 0 #Poes n rcs ai gg B F E S F R e o sae b f r U 20 #Maiu n m r hr uf s 0 x m b f d e m u
8 i 4 降为2s mn s 3 8。
() 引 后 带 d al, 载 完 成 后 5索 i be 装 s eal, nb 装载时间由原来的 8 i 4 降为 3s e mn s 3 3 ( 包括 eal时间)其使用语句为: nb e ,
使用时, 子键值索引失效。
17 使用临时表 . 在软件开发过程中, 临时表的使用可大 大提高程序的运行效率, 原因是系统对临时
P Y B F s e K ye) S U F H 3 hs a l b f r ( bt 2 #P yi l uf i c o g e z s L G U F B F i ( bt ) O 3 oi l b f r 2 #L g a l uf s e K y s c o g e z e L G MA oi l fe S X O 6 # x u nmbr l c l is Mai m e o g a o l m u f g S MV R SZ ta sae m m r sg et e I T IE H 80 ti t l u l rd oy m n s 00 t ia v ni i r h e e i z S MA D D e m m r sg et ( bt ) H 89 i o nw a d oy m ns K ye 12 #S e e s r e z f h e s S MT T L O A y bts. u l i d H 0 #T tl rd m r ( ye)0 oa sae me o K h =)ni t m e C P I T L T N V nevl sc K 30 #C ek i itra ( e) 0 hc p n o t i n L U S R 8 #N m e o L U ee u br R q us f u
Informix动态服务器表分片策略的计划和调整电脑资料
Informix动态效劳器表分片策略的方案和调整电脑资料“数据分片”允许在表一级对数据存储进展控制,对“表中的数据”和"索引"进展分片主要是为了提高应程序的效率,由于INFORMIX动态效劳器可以并行地扫描多个磁盘上的数据,从而实现内部查询的并行操作,因此采用”分片“技术可以提高查询效率。
内部查询的并行化有助于减少对一个复杂查询的响应时间。
”表分片“技术与并行数据查询(PDQ)特征联系在一起使用,这样INFORMIX效劳器可以分配多条线索。
从所有数据分片上并行地选取数据。
此外,还可以仅仅对包含“目标数据”的数据分片进展扫描。
从而大幅度地提高了整个系统效率。
“DATASKIP"这一个特征还允许用户跳过那些出现故障或者不包含“目标数据”的数据分片,当某些数据所在的盘出现故障时,就可以表达出高度的“数据可获得性” 我们通过大量的数据分片将数据分布在许多的磁盘上,也实现了外部查询的并行操作。
这样在大量用户对同一个表进展访问时,可以减少I/O的竞争,每秒钟完成的事务数(系统吞吐能力)也得到了提高。
“表分片”技术还通过对存储在dbspace上的数据分片进展备份/恢复操作。
分片方案在“创立表”和“创立索引”时候均可以用到分片方案。
索引可以附加在与其相关联的数据上,或与数据别离存放。
一个索引如果出现在对表数据的分片方案中,就可以认为索引已经附加在数据上。
另外一个方面,如果索引的分片方案与数据不同,就称为索引与数据别离。
这种情况下,索引存放在指定的dbspace上。
“数据分片”方式主要有两种:“基于轮转法”和“基于表达式”的方案,转法方案轮转法(PR)所使用的分片规那么是系统内部定义的。
使用这种方案,新追加的记录被存放在轮转法方式指定的下一个数据分片。
记录所插入的第一个数据分片也是随机选定,例如,以下语法用于创立一个名为xyz的表:CREATE TABLE xyz FRAGMENT BY ROUND ROBIN INdbspace1,dbspace2......dbspaceNINFORMIX不支持用轮转法方式创立索引,因为这样会降低系统性能。
调优informix数据库
调优informix数据库转⾃简介最近,我遇到了很多与性能相关的问题,因此,我想我应当针对这⼀问题做⼀些解释。
由于懒于整理⾃⼰的基准,⽽且我认为剖析⼴泛使⽤的基准更有意义,因此我们来研究⼀下与 Advanced DataTools 所采⽤的 “Fastest DBA 基准”。
⼤多数读者对此可能并不太熟悉,这是⼀个由 Advanced DataTools 发起的定期辩论,他们提出了⼀个缓慢运⾏的应⽤程序,让挑战参与者来对其进⾏调优。
我在部分提供了这⼀讨论相关细节的链接。
我也意识到类没有书⾯⽂字有⽤,因此,您现在所阅读的是对于如何基于 Fastest DBA 基准的剖析,来调优数据库的探索。
我们将执⾏基准、注意性能问题,单独解决每个问题,并使⽤所有已解决的问题来尝试该基准。
注意这是第⼆个基准;后续的⽂章将会对第三个(以及当前的)基准进⾏剖析。
本⽂不介绍有关基准的安装问题 — README ⽂件当中提供了全⾯的讲解。
我在我的 MacBook 中提出了两个问题,第⼀个是关于引擎的SHMBASE。
我必须编写源⽂件 $ONCONFIG,并进⾏相应的设置(并针对每个 setup.sh 执⾏进⾏重新复制)。
第⼆个问题是,我的Informix ⽤户默认属于 “admin” 组,因此,我必须⼿动将 dbspaces 的所有权改为 Informix:Informix。
基准的执⾏与交付⽆法及时完成。
基准本⾝很简单:它加载客户表,然后为这些客户⽣成账单。
最后的操作是对账单表的更新,这需要花费⼀定时间。
该⼯作并不复杂,但它提供了⼀个认识调优如何提⾼性能的机会。
从哪⾥开始?通常,任何性能调优项⽬的⾸要问题是问题描述。
如何知道何时已经解决了问题?如何衡量性能以及确定它是否已被提⾼,以及提⾼了多少?基于本⽂的⽬的,我想说,基准的运⾏时间过长,我想在⼀个⼩时内执⾏完毕。
此外,我会捕获每个阶段的数据库指标来确定是否有所改善。
有关数据库调优的第⼆个问题是确定调优什么。
INFORMIX动态服务器表分片策略的计划和调整
INFORMIX动态服务器表分片策略的计划和调整---摘自互联网介绍“数据分片”允许在表一级对数据存储进行控制。
“表分片”是INFORMIX数据库的一个特征。
用户可以对表中的记录或索引进行分组,并且存储在不同的位置,这样可以将数据存储到多个磁盘上,从而减少对磁盘I/O的竞争。
数据分片的方案以及分片数据所存放的一组dbspace构成了“分片策略”。
数据分片有两种基本类型:基于轮转分片“和”基于表达式分片”,对于“基于轮转法分片”,正如其名字一样,数据是根据轮转法方式存入表中的。
“基于表达式分片”则根据表中的一个或多个字段对分片的规则进行定义。
一般在预知查询条件时采用这种方式,从而避免查询中对某些分片的扫描。
对“表中的数据”和"索引"进行分片主要是为了提高应程序的效率,由于INFORMIX动态服务器可以并行地扫描多个磁盘上的数据,从而实现内部查询的并行操作,因此采用”分片“技术可以提高查询效率。
内部查询的并行化有助于减少对一个复杂查询的响应时间。
”表分片“技术与并行数据查询(PDQ)特征联系在一起使用,这样INFORMIX服务器可以分配多条线索。
从所有数据分片上并行地选取数据。
此外,还可以仅仅对包含“目标数据”的数据分片进行扫描。
从而大幅度地提高了整个系统效率。
“DATASKIP"这一个特征还允许用户跳过那些出现故障或者不包含“目标数据”的数据分片,当某些数据所在的盘出现故障时,就可以体现出高度的“数据可获得性” 我们通过大量的数据分片将数据分布在许多的磁盘上,也实现了外部查询的并行操作。
这样在大量用户对同一个表进行访问时,可以减少I/O的竞争,每秒钟完成的事务数(系统吞吐能力)也得到了提高。
“表分片”技术还通过对存储在dbspace上的数据分片进行备份/恢复操作。
分片方案在“创建表”和“创建索引”时候均可以用到分片方案。
索引可以附加在与其相关联的数据上,或与数据分离存放。
数据库(informix)优化和备份策略方案指导
NIOS DB(Informix)数据库优化和备份策略方案指导亿阳信通服务支持中心2011年05月版权所有本产品或文档受版权保护,其使用、复制、发行和反编译均受许可证限制。
未经亿阳及其授权者事先的书面许可,不得以任何形式、任何手段复制本产品及其文档的任何部分。
目录目录 (3)第一章前言 (4)1.1目的41.2内容41.3谁应该读这本书 (4)第二章 NIOS数据库优化 (5)2.1 基本DBS优化和调整 (5)2.2 Informix onconfig参数配置 (7)2.3 表结构及分片策略优化 (29)2.4 应用索引的优化 (30)第三章 NIOSDB备份和容灾策略 (32)3.1.备份策略和容灾 (32)3.2 .高可用性 (32)3.3. 数据压缩 (33)第四章常用提高性能的注意事项和出错查询 (33)4.1 合理利用索引 (33)4.2 SQL技巧 (33)4.3 View, PDQ, Stored Procedure, and Trigger (34)4.4表被索处理 (34)4.5查询主键重复 (35)第一章前言1.1目的随着网优项目的推进,对数据粒度和范围需求造成数据量急剧膨胀。
对原数据库构架不合理会造成难以适应生产的需要,对数据库进行格式优化就尤为重要,同样使用话务网管数据库的改造,根据现场情况,因地制宜的进行改造,会大大降低维护成本,提高生产效率。
1.2内容针对省级网优系统服务程序的要求,本指导描述了对INFORMIX 11.5 以上版本的优化关键点,以及备份和容灾参考,保障生产需要:*数据库版本建议*DBS空间划分改造的指导建议*系统配置*onconfig文件参数的修改建议*表结构及分片策略的建议*索引优化建议和参考*备份和容灾方案建议1.3谁应该读这本书本指导适合在现场有一定维护经验,对INFORMIX维护达到中级维护水平。
并熟悉操作系统和有基本的数据库开发经验。
第二章 NIOS数据库优化此章介绍Informix 11.5优化指导内容:优化前准备⏹INFORMIX版本升级需要由于INFORMIX在技术升级和改造中,FC7版本以上相对问题比较少,建议INFORMIX升级到11.5FC7以上。
Informix数据库调优
Informix IDS数据库广泛的应用在金融、电信和邮政等各个行业中,它是一个多线程的关系数据库服务器,采用对称的多处理器技术和单处理器体系结构,并具有先进的技术、性能与高可靠性和高可用性。
它为用户提供了动态系统管理工具来监控和管理数据库服务器。
随着数据库数量的增加和应用处理交易量的增多,它的运行效率显得尤为突出。
在硬件环境不变的情况下,数据库性能的提高也一直成为大家关注的话题。
数据库系统性能通常与CPU、共享内存、数据的存储和网络设置等四个方面有直接的关系。
下面着重介绍通过配置Informix IDS参数和监控Informix IDS运行效率,来提高数据库的性能。
虚拟处理器参数的调整和监控Informix IDS对于虚拟处理器的分类,达到了十多种,每个虚拟处理器像操作系统的一个CPU允许多个进程服务于多个用户一样,也可以运行多个线程来为多个SQL 客户机应用程序提供服务。
其中最重要的虚拟处理器是CPU、AIO、网络处理器三种,在这三种服务器中,CPU虚拟处理器(CPU VP)是最重要的,它驱动其他虚拟处理器,如磁盘I/O 虚拟处理器(AIO VP)和IDS 会话中的所有线程。
AIO VP的功能是在SQL 语句访问或更新数据库数据时,执行磁盘I/O。
网络处理器涉及到数据库服务器的客户机或用户连接。
可以进行两种类型的连接:共享内存连接和网络连接。
下面分别介绍这三种类型的参数。
1〃CPU虚拟处理器(CPU VP)的参数NUMCPUVPS:定义了Informix IDS 开始启动的CPU VP的数量。
一般情况下不能超过系统CPU的个数,对于单或双CPU的计算机系统,建议设置NUMCPUVPS是1或者2,即使用一个或两个CPU VP;对于有4个以上CPU,建议设置NUMCPUVPS 的值等于处理器总数减1。
SINGLE_CPU_VP:定义了多CPU VP(0)和单CPU VP(1)设置。
MULTIPROCESSOR:定义了多个CPU VP(1)还是单个CPU VP(0)。
informix数据库的查询优化技术
informix数据库的查询优化技术1.合理使用索引索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。
现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。
索引的使用要恰到好处,其使用原则如下:●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。
比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。
如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
●如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
●使用系统工具。
如Informix数据库有一个tbcheck工具,可以在可疑的索引上进行检查。
在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性,必要时进行修复。
另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。
2.避免或简化排序应当简化或避免对大型表进行重复的排序。
当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。
以下是一些影响因素:●索引中不包括一个或几个待排序的列;●group by或order by子句中列的次序与索引的次序不一样;●排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。
如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。
3.消除对大型表行数据的顺序存取在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响。
比如采用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查询就要查询10亿行数据。
数据库性能优化的方法和策略
数据库性能优化的方法和策略数据库性能优化是一项复杂而重要的任务,它可以提升数据库系统的响应速度、提高系统的可用性和稳定性,保证用户的良好体验。
本文将详细介绍数据库性能优化的方法和策略,帮助读者全面了解如何优化数据库性能。
一、数据库性能优化的目标数据库性能优化的目标是通过优化数据库系统的设计、配置和管理,使得系统能够快速、高效地处理数据。
优化的目标包括以下几个方面:1. 响应速度:缩短数据库操作的响应时间,提升用户体验。
2. 吞吐量:提高数据库的处理能力,增加系统的并发处理能力。
3. 资源利用率:合理利用服务器资源,提高数据库系统的效率。
4. 可伸缩性:保证系统能够在增加负载的情况下仍然保持良好的性能。
二、数据库性能优化的方法和策略1. 设计优化- 数据库结构设计:合理设计数据库的表结构,避免数据冗余和不一致,选择合适的数据类型和数据长度。
- 索引优化:根据查询需求,创建合适的索引,提高查询速度。
- 分区表设计:将大表按照某个字段进行分区,提高查询效率。
- 数据库范式化:将数据库设计范式化,避免数据冗余,提高数据更新效率。
- 缓存设计:采用缓存技术,将经常访问的数据缓存到内存中,减少对数据库的访问次数。
2. 查询优化- 避免全表查询:尽量避免使用SELECT *语句,只查询需要的字段,减少查询的数据量。
- 合理使用索引:避免在索引列上进行计算和函数操作,以免引起全表扫描。
- 避免模糊查询:模糊查询会导致全表扫描,应尽量避免使用%开头的LIKE语句。
- 避免多表关联查询:避免多个表之间进行复杂的关联查询,可以通过冗余字段或者联合查询进行优化。
3. 服务器优化- 选择合适的硬件设备:根据数据库的规模和负载情况,选择适当的服务器和存储设备,提升数据库的处理能力。
- 调整内存配置:合理配置数据库的内存参数,提高缓冲池的效率,减少磁盘IO。
- 调整CPU参数:根据数据库的负载情况,合理调整CPU的相关参数,提高系统的处理能力。
提高INFORMIX数据库运行效率的策略与措施
……
update satmxhz
set
sbrq=b.sbrq,
ye=b.ye,
lxjs=b.lxjs,
wdbs=wdbs+1,
dac=dac
where rowid=id;
……
如原为:
declare ps2 cursor for
select *,rowid
into b,id
from satmxhz
where zh[1,9]=vvjgbm
and bz=″0″
order by zh;
open ps2;
fetch ps2;
fetch cur_mxh;
}
close mx_cur;
close cur_mxh;
commit work;
以上一段程序是将satmxh表中记录转移到satmx表中,虽然可用
begin work;
insert into satmx select * from satmxh;
open ps2;
fetch ps2;
while (sqlca.sqlcode==0){
……
update satmxhz
set
sbrq=b.sbrq,
ye =b.ye,
lxjs=b.lxjs,
wdbs=b.wdbs,
dac=dac
4.建库的日志方式:
(1)No logging:不能进行事务处理。
(2)buffered log:共享缓存满即刷新写入磁盘。
(3)unbuffered log:当一个交易完成时即刷新写入磁盘。
数据库优化的终极秘籍:15个提高数据库性能的技巧与策略
数据库优化的终极秘籍:15个提高数据库性能的技巧与策略数据库优化是提高数据库性能和效率的关键步骤。
通过优化数据库,可以减少查询时间、提高数据处理速度、增加系统的稳定性。
下面是数据库优化的终极秘籍,包括15个提高数据库性能的技巧与策略。
1.使用合适的数据类型:选择适合存储数据的数据类型,避免使用过大或过小的数据类型,以提高性能和节省存储空间。
2.正确使用索引:索引是提高查询性能的重要手段。
但是过多或错误的使用索引会降低数据库性能。
需要根据业务需求合理创建索引,并定期优化索引以保持其效率。
3.避免全表扫描:避免使用没有使用索引的查询语句,它会导致数据库做全表扫描,从而严重降低性能。
应该使用合适的索引来加速查询。
4.优化慢查询:找出数据库中的慢查询,通过分析和优化查询语句,可以减少查询时间,提高数据库性能。
5.分区表:对大型表进行分区可以提高查询性能。
将表分为多个较小的分区,可以减少查询时间,并充分利用并行查询的优势。
6.使用连接池:连接池可以减少数据库连接的开销,提高并发处理能力。
合理配置和使用连接池可以提高数据库性能。
7.避免频繁的数据库操作:减少频繁的数据库操作可以降低数据库负载,提高数据库性能。
可以通过批量操作、缓存和异步操作等手段来减少数据库访问次数。
8.合理设计数据库表结构:合理的表结构设计可以提高查询性能。
避免使用过多的关联和冗余字段,同时注意避免使用过多的表连接操作。
9.使用合适的缓存策略:使用缓存可以减少数据库访问次数,提高性能。
可以使用内存缓存、分布式缓存等策略来加速数据读写操作。
10.定期备份和维护数据库:定期备份和维护数据库可以保证数据库的稳定性和性能。
包括定期清理日志、重新构建索引等操作。
11.优化I/O操作:I/O是数据库性能的瓶颈之一。
可以通过使用合适的硬件设备、优化存储结构等措施来提高I/O性能。
12.合理配置数据库参数:合理配置数据库参数可以提高数据库的性能。
包括调整缓冲池大小、最大连接数、并发控制等参数。
Informix数据库性能调整
Informix数据库性能调整数据库性能调整原则数据库性能调整是数据库应用中的重要问题,它可以使数据库系统运行在最佳状态。
进行性能调整时,应认真观察系统中所有的环节,选择合适的工具来监控系统和采集数据,同时应遵循一些原则。
其中应观察的环节包括:监控对性能有很大影响的系统资源的使用状况;确定影响这些资源的数据库活动;监控数据库系统的用户活动。
性能调整应遵守以下原则:考虑全局,修改局部进行数据库性能调整时需要排除无关因素的干扰,找到关键问题。
例如:系统管理员在做调整时往往会先看一下硬件系统的统计数据,如CPU利用率、I/O活动状况和页化(pa ging),初试者往往会被某个数据所迷惑(如高频度的磁盘活动) 而决定通过提高硬件的性能来解决问题,如添置新设备。
实际上高频度的磁盘活动有可能是由于对数据采用了不正确扫描方式或数据库系统额外的开销造成的,此时通过建立索引或调整数据库系统本身就有可能解决这个问题,其费用远远小于购买硬件。
消除瓶颈在计算机系统中,处理不当就极易产生瓶颈效应,严重影响系统的性能,因此消除瓶颈是性能调整的一个重要内容。
瓶颈现象可以用交通堵塞来类比。
交通堵塞通常是由于大部分车辆必需通过一狭窄的道路或多股车道的车辆合并到一股车道,瓶颈效应也是类似, 要根据不同的原因来选择不同的方法。
对于第一种原因,可以采取提高部分环节性能的方法来解决;而对于后一种则要采取分割的方法,即把负载分给多个环节,以减轻某个环节的负担。
分割分为空间、资源和时间三种方式。
但要注意,分割并不一定提高性能。
总的来讲,消除瓶颈的方法有:平衡系统资源上的负载;调整数据库服务器的配置;调整用户的数据配置;调整OLTP查询和DSS查询所需资源的分配。
调整客户心态进行数据库性能调整时应首先把客户的心态调整到一个合理的程度。
因为在系统性能很差时,客户非常希望通过专业人员所作的性能调整迅速提高现有系统性能,对性能调整抱有很大希望且心情急切,所以有必要对客户解释清楚调整的目的及其效果。
提高Informix数据库系统运行效率的途径
提高Informix数据库系统运行效率的途径
刘正龙
【期刊名称】《电脑与信息技术》
【年(卷),期】2001(009)002
【摘要】就关系型数据库Informix系统运行效率从宿主机硬件配置、数据库环境参数设置、数据库表及索引创建等方面进行了分析和探讨,并给出了一些可借鉴的方法.
【总页数】3页(P61-62,66)
【作者】刘正龙
【作者单位】中国建设银行湖南省分行科技处,410011
【正文语种】中文
【中图分类】TP311.132
【相关文献】
1.提高INFORMIX数据库运行效率的策略与措施 [J], 范俊军
2.如何提高INFORMIX-Online的运行效率 [J], 黄中
3.提高Informix ESQL/C程序运行效率的几点建议 [J], 周志强
4.提高Informix数据库运行效率的方法 [J], 唐延峰
5.提高数据库系统运行效率的几种方法 [J], 方文春
因版权原因,仅展示原文概要,查看原文内容请购买。
informix的性能优化(之一)数据库教程-电脑资料
informix的性能优化(之一)数据库教程-电脑资料性能|优化informix的性能优化(一)作者: CCBZZP以下是我用INFORMIX DATABASE的一點体會,分享給大家,歡迎大家一起探討!1. 日志緩沖如果不怕丟失几個事務則最好用緩沖日志,這樣可以得到更好的性能.如果數据安全性很重要,則最好用非緩沖日志.2. DSS SERVER的优化有三個目標:1>. 總查詢通過量最大化可以將ONCONFIG文件中的PDQPRIORITY設置限制小于25%2>. 每個查詢處理時間最小化可以將ONCONFIG文件中的PDQPRIORITY設置限制大于50%3>. 平衡优先級可以將ONCONFIG文件中的PDQPRIORITY設置限制大于25%,小于50%3. OLTP SERVER的优化有三個目標:1>. 更新活動通過量最大化使用緩沖日志將檢驗點間隔最大化,周期最小化可以將ONCONFIG文件中的PDQPRIORITY設置限制為0增加物理日志長度最大化寫入緩沖百分比其實以上的目標也是會矛盾的,關鍵在于如何取舍.2>. 查詢活動通過量最大化最大化BUFFERS可以將ONCONFIG文件中的PDQPRIORITY設置為0或1最大化讀取緩沖百分比3>. 事務安全最大化最小化CKPTINTVL使用非緩沖日志使用冗余磁盤和I/O路徑減少物理日志長度4. 簡單查詢SERVER的优化有三個目標:最大化BUFFERS,它一般>=40%RAM可以將ONCONFIG文件中的PDQPRIORITY設置<25%5. 內存問題INFORMIX可以使用的內存是不限制的,給多少用多少,下面以IDS7.X為例:緩沖區最多 768000 PAGES (OS 3GBW/4KB)DSS內存最多1G鎖最多8000000邏輯日志緩沖區 3個 LOGSIZE最大2G, TOTAL 6G物理日志緩沖區 2個 PHYSFILE最大2G, TOTAL 4G數据字典緩沖區沒有限制,可以調整參數DD_HASHSIZE 和 DD_HASHMAXonstat -g dic确定數据字典緩沖區是否接近容量存儲過程緩沖區沒有限制,可以調整參數PC_HASHSIZE和PC_POOLSIZEonstat -g prc确定存儲過程緩沖區是否接近容量數据分布緩沖區可以調整參數DS_HASHSIZE和DS_POOLSIZE onstat -g dsc确定數据分布緩沖區是否接近容量6. 磁盤問題磁盤是越多越好的多些驅動器比大的驅動器好采取RAID磁盤陣列7. 內核限制不同的OS有不同的內核,這是可以調整的.8. 內存參數onstat -g seg确定共享內存分配和查詢內存分區SHMVIRTSIZE确保最低正常負荷內存,如果消息日志文件中表示動態新共享內存的消息很多,則要增加此參數的數值.SHMADD至少應為SHMVIRTSIZE的10%SHMTOTAL除非很小的系統,否則社為0讓內存增長.9. 分塊表和大量區域用oncheck -pt 和 oncheck -pe檢查表的區域數及其在磁盤上的布局一般說表格超過33個區域系統比較慢,可以壓縮表格來解決1>. 刪除表格重建並重新裝入數据2>. 重新創建索引3>. 將表和索引放在不同的DBSPACE歡迎大家一起探討!待續...。
Informix数据库性能常见问题典型情况浅析
Informix数据库性能常见问题典型情况浅析张生成(酒泉职业技术学院,甘肃酒泉735000)摘要:数据库配置安装完成投入运行后。
数据库运行的性能就成为数据库管理人员(DBA)的一个重要任务。
根据教学过程中对Informix数据库的使用,总结出了一些常见性问题的处理经验,希望能和大家共同交流。
关键词:日常信息;处理思路;代价信息TP311.13:A:1672-7800(2010)04-0169-021平时的信息收集和维护工作为了更好地处理可能出现的性能问题,需要在乎时就注意积累操作系统、数据库的日常运行信息,这样可以了解系统的运行特点和基本负荷变化情况,当数据库出现性能问题的时候,这些都是非常有用的信息。
收集Infonxix数据库的日常信息,最简单的可以仅观察onstat-p的输出结果,和数据库性能相关的主要是读缓存率(第一个%cached)、写缓存率(第二个%cached)、顺序扫描数(seqscans)。
读缓存率不应该低于90%,否则就应该关注顺序扫描数,找出经常被顺序扫描的大表,创建相应索引或修改应用SQL,必要时还需要增加数据库BUFFERS。
写缓存率通常不应该低于85%,不过由于受到应用写库的方式和LRU设置的影响,稍微低一些也可以接受。
数据库日志中记录的检查点持续时间(checkpoint durationtime)也需要关注,性能良好的实例中,该值不超过3秒。
在日常维护时,注意定期收集数据库的统计信息(update statistics),如果担心库太大,在业务空闲期间无法完成,至少应该对变化比较频繁的大表针对索引中的第一个字段收集统计信息,语法:update statistics for table mytab(coll);当性能问题出现后,可以按如下步骤来定位问题:首先应该利用操作系统命令查看一下当时操作系统状态:CPU/IO/SWAP,是否和平时差别很大;查看操作系统日志是否最近有异常报错;检查数据库日志,看看是否有断言错误(Assert Failed),是否有数据库内部错误发生,数据库的检查点持续时间相比平常是否有显著增加。
数据库性能优化的技巧与方法
数据库性能优化的技巧与方法随着企业数据量的不断增长,数据库的性能优化变得越来越重要。
一个高效的数据库可以确保数据的快速存取和处理,提高系统的响应速度和稳定性。
本文将介绍一些常用的数据库性能优化的技巧与方法,帮助您优化数据库性能。
1. 合理设计数据库模式数据库模式的设计直接影响到数据库的性能。
合理划分数据表、选择适当的数据类型、建立索引等都是数据库模式设计的重要方面。
简化数据表的关系,遵循关系型数据库的三范式,能够降低数据库的冗余度,提高查询和更新的效率。
同时,选择合适的数据类型,避免使用过大或过小的数据类型,可以减少数据库的存储空间占用。
2. 优化查询语句查询语句是数据库操作中最常见的操作之一,优化查询语句可以显著提升数据库的性能。
在编写查询语句时,应避免使用不必要的连接和子查询,合理利用索引,尽量减少数据表的扫描次数。
此外,使用合适的关键字和操作符,避免使用全表扫描等低效操作,也能够提高查询效率。
3. 设置适当的索引索引是优化数据库性能的重要手段之一。
通过为经常查询的列或组合列建立索引,可以提高查询的速度。
但是过多的索引也会带来额外的开销,并降低插入和更新的效率。
因此,在设置索引时需要谨慎选择。
可以根据业务需求和查询频率,选择适当的列建立索引,避免无效的索引对数据库性能造成负面影响。
4. 优化存储过程和触发器存储过程和触发器是常用的数据库编程工具,可以提高数据库的可维护性和性能。
在编写存储过程和触发器时,应遵循一些优化原则。
例如,避免使用复杂的逻辑和计算,尽量使用简单和高效的方法来实现要求。
同时,对于大量数据的处理,可以考虑使用批处理和并行处理等技术,提高处理效率。
5. 定期进行数据库优化和维护定期进行数据库优化和维护是保持数据库性能稳定的有效手段。
可以通过定期收集数据库的统计信息,如表的行数、索引的使用情况等,评估数据库的性能状况。
同时,可以使用数据库性能分析工具来检测慢查询、死锁等性能问题,并及时进行优化。
Informix性能调优案例讲解(转)
Informix性能调优案例讲解(转)概述在实际的⽣产运⾏环境中,笔者在国内很多客户现场都看到开发⼈员和系统管理⼈员遇到很多有关于 Informix 数据库引起的性能问题,进⽽被多次问起如何进⾏ Informix 数据库性能调优,笔者根据⾃⼰在⼯作中对 Informix 数据库的使⽤经验积累写下这篇⽂章。
性能优化原则包括:性能规划:深⼊了解应⽤与数据库的交互特征,确⽴良好的设计、开发、测试迭代过程,上线前消除模型上的性能瓶颈。
实例调优:建⽴性能基准,对⽐调节数据库、操作系统、存储、⽹络等的配置,主动监控、消除瓶颈。
SQL 调优:书写⾼效 SQL,优化相关数据库对象,充分借助优化器,确定最佳执⾏计划。
性能优化流程1. ⾸先执⾏下⾯的初始检查:获取直接⽤户的使⽤反馈,确定性能⽬标和范围。
获取性能表现好与坏时的操作系统、数据库、应⽤统计信息。
对数据库做⼀次全⾯健康检查。
2. 根据收集的信息,以及对应⽤特性的了解,构建性能概念模型,明确性能瓶颈所在,以及导致性能的根本原因。
⾸先应该排除操作系统、硬件资源造成的瓶颈。
然后针对数据库系统性能进⾏分析必要时,还需要检查应⽤⽇志,因为系统性能问题也可能由于应⽤⾮ SQL 部分造成瓶颈。
3. 提出⼀系列针对的优化措施,并根据它们对性能改善的重要程度排序,然后逐⼀加以实施。
不要⼀次执⾏所有的优化措施,必须逐条尝试,逐步对⽐。
4. 通过获取直接⽤户的反馈验证调节是否已经产⽣预期的效果,否则,需要重新提炼性能概念模型,直到对应⽤特性了解进⼀步准确。
5. 重复上述,直到性能达到⽬标或由于客观约束⽆法进⼀步优化。
当从操作系统层⾯判断系统存在瓶颈并且是数据库引起的,那么可以从下⾯的流程图来解决图 1. 性能诊断优化流程性能诊断优化流程()典型性能问题案例案例 1:数据库应⽤突然变慢问题特征数据库应⽤突然变慢,查看系统信息,发现 CPU 空闲突然很低,IO 性能没有明显恶化。
处理步骤⾸先,需要排除操作系统上其他应⽤程序的问题。
Informix系统性能的优化
Informix系统性能的优化接下来,讲述与系统性能关系比较紧密的几点1 Solaris系统参数的设置因为在不同informix版本下,Solaris内核参数的设置可能不同,建议从当前安装版本的informix目录下类似于release/en_us/0333/IDS_7.3的文件中获取相关信息。
在主备机上分别用root身份登录后,编辑/etc/system文件调整系统参数,确保system 文件中存在以下内容:2 Informix数据库参数的设置3 ONCONFIG配置参数说明ONCONFIG文件中对性能有影响的参数主要有:CLEANERS:Page Cleaner 线程的数目RESIDENT: 驻留段是否常驻物理内存MULTIPROSESSOR: 指示单/多处理器AFF_NPROCS/AFF_SPROC: 将CPU VPC与物理处理器进行绑定NUMCPUVPS: CPU VPS的个数SINGLE_CPU_VP: CPU VPS是否一个NOAGE: 提高CPU VPS的运行机会LRUS:LRU 队列的个数LRU_MAX_DIRTY/LRU_MIN_DIRTY:启动和终止Page Cleaner线程的脏页面的比例CKPTINTVL:执行检查点操作的时间间隔PA_PAGES/PA_THRESHOLD:前读页数目与时机注释:对应于每一个SERVER,都有一个ONCONFIG配置文件与之对应.ONCONFIG配置文件记录了Informix的一个实例的所有配置参数,其中有一些参数的配置是否得当与性能关系密切.3.1CLEANERS制定系统中Page Cleaner线程的数目.Page Cleaner是系统线程的和种,他的任务就是将系统缓冲区池(Buffer Pool)中被修改过的页面刷新到磁盘上,以使内存中的数据和磁盘上的数据保持一致.该参数的值最好是等同于有DBSpace在其上存储的活跃的磁盘数目:换言之,该参数决定于独立的I/O通道.3.2RESIDENT该参数用于指定是否要求共享内存中的可驻留部分(Resident Portion)必须驻留在物理内存中.如果该值设置为Y,则要求其必须驻留在物理内存中;如果设置其值为N,则Resident Portion的页面可以被虚存管理系统换出到磁盘上.将Resident Portion强制驻留在物理内存中的优点是可以提高对该部分内存区域访问的速度(访问命中率为100%),由于该部分是共享内存中最主要的一部分,所以这样做有利于系统性能的提高;3.3MULTIPROSESSOR指明服务器是单处理器还是多处理器.单处理器设置为0,多处理器设置为1.3.4AFF_NPROCS/AFF_SPROC当参数MULTIPROSESSOR设置为1,即Informix Dynamic Server系统运行在一个多处理器服务器上,我们可以利用操作系统支持的处理器和(Affinity)特性将CPU VPC(注:CPU VPS:最重要的一类虚拟处理器类,包含所有用户线程及部分系统线程,在该虚拟处理器类中不允许有阻塞性系统调用出现.)同某些处理器进行绑定.与CPU VPC绑定的处理器越多,CPU VPC中的线程所能获得的运行机会也就越多,该VPC的重要性也就越突出.AFF_NPROCS用于指定服务器上将有几个处理器被用于CPU VPC进行绑定.该参数不能超过实际处理器的个数.如果该参数的值为0,则意味着CPU VPC被绑定在一个特写的处理器上.后一个参数AFF_SPROC用于指定服务器上从哪一个编号开始的那几个处理器将同CPU VPC进行绑定.处理器的编号从0开始.譬如,服务器上有四个处理器,它们分别编号0,1,2,3,如果AFF_NPROC的值为3而参数AFF_SPROC的值为0,则意味着编号0,1,2的三个处理将与CPU VPC进行绑定.注意:进行正理绑定以后,CPU VPC中的所有线程就能在绑定的几个处理器这间自由迁移,而所有其它VPC中的所有线程都只能在剩余的处理器上运行.因此,在设置这两个参数时,至少要给其它VPC保留一个处理器以供其中的线程运行.3.5NUMCPUVPS指定系统中CPU VPC的个数.如果服务器是一个单处理器或双处理器的机器,将该参数的值设为1,如果服务器的物理处理数较多,则可以多设几个CPU VPC,最好是物理处理器个娄减一.注意:CPU VPC的数据不能多于系统中物理处理器的数目.3.6SINGLE_CPU_VP指示系统中的CPU VPC是否是一个,如果只有一个该参数设为1,否则设为0.3.7NOAGE在操作系统对进程进行调度时,如果某个进程在过去一段时间经常占用CPU,则操作系统会降低它的优先级.将该参数设为1可屏蔽掉这一机制,使得操作系统在调度CPU VPC中的线程时不考虑其以前对CPU占用情况,从而使CPU VPC中的线程获得更多的运行机会.3.8LRUS该参数用于指定系统中LRU队列的个数.LRU是Least Recently Used(最近最少使用)的缩写.当系统中所有的缓冲区都分配完毕以后,如果又由新的页面被读入内存,就必须进行替换,将某个不太重要的缓冲区中的页面覆盖掉.Informix Dynamic Server系统采用的替换策略就是LRU,即认为”最近最少使用(被访问)”的页面是最不重要的,这样的页面将被覆盖掉.系统中采用LRU队列来实现这一策略,所有缓冲区被安置在某一个LRU队列中,队列中越靠近”头”上的缓冲区最近越少访问,一量某个缓冲区被访问后,就将其在队列中的位置向队列”尾”移动.系统中维护多条LRU队列,使得每条队列的长度缩短了;也有多个”头”可供选取进行替换,提高了系统的整体性能.建议:一般的应用系统,对于多处理器的服务器来说,最好将LRU队列的数目设置为CPU VPC的数目;而对于单处理器或双处理器的服务器来说,可将LRU队列的数目设为3或4.特定的应用系统根据自己的应用特点设置该参数.3.9LRU_MAX_DIRTY/LRU_MIN_DIRTY缓冲区的页面被修改后,为避免过于频繁地启动I/O,并不立即刷新回磁盘.系统每隔一段固定的时间后,会执行一个检查点(Check Point)操作,将所有被修改而末刷新的页面全部刷新到磁盘上.在两次检查点操作之间,可能会有许多页面被修改但不被刷新,我们称之为脏页面(Dirty),这样的脏页面多了以后,可供用于替换的干净页面就少了,系统进行替换时的效率就可能下降.因此,当系统中的脏页面达到一定比例时,系统就会启动Page Cleaner线程,刷新一些页面,保证系统中有一定比例的干净页面.LRU_MAX_DIRTY和LRU_MIN_DIRTY都是百分比,代表系统中脏页面在所有缓冲区中所占的比例.当系统中的脏页面的比例上升直至超过了参数LRU_MAX_DIRTY的值的时候,系统就会唤醒Page Cleaner线程,刷新脏页面;由于Page Cleaner线程的刷新工作,系统中的脏页面的比例又会回落,当系统中的脏页面的比例回落到参数LRU_MIN_DIRTY的值以下时,Page Cleaner线程又开始睡眠,直到下一次被唤醒或检查点操作.但如果一次检查点过程很长,在此期间即使LRU的上下限都很低也不一定影响性能。
Informix数据仓库解决方案数据库-电脑资料
Informix数据仓库解决方案数据库-电脑资料(2)确定系统体系结构从实施的角度来看,设计数据仓库系统体系结构有多种方式:构造部门级的数据集市DataMart直接构造企业级的数据仓库DataWarehouse系统先建立部门级数据集市,然后发展成企业级数据仓库系统(3)确定数据源列出向数据仓库提供数据的数据源清单。
源数据的复杂性、规模、完整性对建立数据仓库的影响比其它因素要大。
要格外注意哪些数据源的数据类型、粒度和内容是兼容的。
(4)容量规划除了体系结构之外,硬件和软件资源对数据仓库也至关重要。
作为需求定义的一部分,估计数据仓库将要存储的数据量以及将对数据进行的处理很重要。
(5)技术评价在选择软件和硬件平台时,最好听取专家的建议,尤其是对与您相似的环境有经验的专家。
InformixDecisionFrontier数据仓库实现套件,为用户提供了快速、集成、完整的数据仓库实现工具。
2.逻辑模型设计逻辑模型设计主要是指数据仓库数据的逻辑表现形式。
从最终应用的功能和性能的角度来看,数据仓库的数据模型也许是整个项目最重要的方面。
为数据仓库和数据集市定义数据模型是一项复杂的工作,需要领域专家的参与。
3.物理模型设计在进行物理模型设计时,主要是将数据仓库的逻辑模型转换为在数据库中的物理表结构。
在物理模型设计时,可以采用ERWin等辅助设计工具。
Informix采用ROLAP方式,数据仓库数据的存储主要采用InformixIDS(InformixDynamicServer)数据库,电脑资料4.数据抽取、清洗、集成、装载等数据抽取是数据仓库建立中的一个非常重要的步骤。
它负责将分布在用户业务系统中的数据进行抽取、清洗、集成。
(1)定义数据载入和维护策略(2)数据抽取/清洗/转换/装载Informix提供了一系列工具访问存储在异构数据库中的业务系统数据。
Informix还提供了数据复制产品,这样,系统会通过同步或异步方式自动将符合规则的数据定时进行传递,保证数据的完整性、一致性。
Informix 系统表监控和优化数据库
Informix 系统表监控和优化数据库简介:大多数Informix 使用者都会使用onstat,oncheck等命令的方式来监控Informix 数据库的运行情况,从而确定数据库优化方案。
但这种方法存在一些难度,需要多个命令输出综合考虑,才能得出结论。
本文从另外一个角度--SQL 语句,通过SQL 语句查询系统表的方式,返回综合的、有组织性的、有实际数据根据的信息。
DBA 根据本文可以直接找到系统性能问题,从而进行快速有效的优化,同时可以根据这些有效的数据完成数据库优化过程的报告文档。
Informix 数据库系统字典表简介Informix 数据库服务器运行时的状态信息是数据库管理员DBA 进行系统监控和优化的必需信息来源。
Informix 的状态信息在内部以2 种方式存在,如图1 所示,一部分是存在于Informix 运行的共享内存中,这部分信息在数据库关闭后,其信息将自动消失,只是一个内存信息,我们称为内存表,如:sysbufpool,sysvpprof,sysprofile等。
另外一部分是以Informix 物理字典表的方式存储,如:systables,sysindex。
Informix 数据库系统字典表是用来访问这2 个部分的内部信息的一个接口,可以通过SQL 语句查询Informix 系统运行的动态情况。
图 1. Informix 系统表接口示意图从另外一个视角来理解Informix 系统表,就是从系统的组成数据库来看。
如图2 所示,主要包括3 个数据库:sysmaster,sysadmin和用户数据库。
其中sysmaster是最重要的系统数据库,该数据库保存实例(Instance) 级别的系统信息,如实例运行的总体信息,所有的表等。
sysadmin是一个管理系统数据库,主要用来管理Informix 系统管理相关的信息,如可以通过该数据库可以定义Informix 的任务调度器等。
用户数据库,就是用户定义用来存储用户数据的数据库,每个用户数据库都包含有数据库(Database) 级别的系统表,如systables等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fetch ps2;
while (sqlca.sqlcode==0){
……
update satmxhz
set
sbrq=b.sbrq,
ye =b.ye,
lxjs=b.lxjs,
wdbs=b.wdbs,
dac=dac
declare mx_cur cursor for insert_mx;
open mx_cur;
declare cur_mxh cursor for
select * into bmxh
from satmxh
for update;
open cur_mxh;
fetch cur_mxh;
delete from satmxh
where current of cur_mxh;
fetch cur_mxh;
}
close mx_cur;
close cur_mxh;
commit work;
以上一段程序是将satmxh表中记录转移到satmx表中,虽然可用
刷新时写入磁盘的,所以上载数据速度最快,但其缺点是必须编程实现。
(2)避免加长锁、长事务操作,这在处理大数据量时其优劣尤为突出,在能保证数据一致性的前提下应将长事务分解为小事务来处理。
如将前面例题数据分不同网点机构进行转移,避免长事务,可大大提高运行效率。
wr_satmx():
database workdb;
2.insert语句优化要点
(1)采用insert cursor或put替代insert;
如:wr_satmx ()
begin work;
prepare insert_mx from ″insert into satmx
values(?,?,?,?,?,?,?,?,?,?,?,?)″;
where col>=1 and col<=1000 效率低
(3)避免子查询与相关查询。
如:where zh in (select zh from table where xm matches ″*11*″)
可将其编为declare cursor 的一while循环来处理。
(4)避免会引起磁盘读写的rowid操作。在where子句中或select语句中,用rowid要产生磁盘读写,是一个物理过程,会影响性
group by方式后效率大相径庭。
/*将定期表中所有数据按机构,储种统计户数,余额置临时表中并建索引*/
select zh[1,9] jg,zh[19,20]cz,count(*)hs,sum(ye)sumye from satdq
where bz=″0″
group by zh[1,9],zh [19,20]
4.建库的日志方式:
(1)No logging:不能进行事务处理。
(2)buffered log:共享缓存满即刷新写入磁盘。
(3)unbuffered log:当一个交易完成时即刷新写入磁盘。
(4)ansi mode:只有日期格式差异,月日年形式,其他与unbuffered相同。
提高INFORMIX数据库运行效率的策略与措施
摘 要 本文从INFORMIX数据库系统参数性能调整、库表创建方式、ESQL/C程序设计、索引等实际应用方面提出了提高INFORMIX数
据库运行效率的若干策略与措施,旨在为INFORMIX数据库维护人员和程序设计人员提供有益的参考,文中穿插了一些简洁实例以便于读
如:where zh matches ″330678860*″应用where zh[1,9]=″330678860″替代。
(7)通过聚族索引cluster index提高效率。
(8)避免使用order by,group by,该操作需生成临时表而影响效率,可用视图来处理,视图的引入能控制用户的存取,提高效率。
where current of ps2;
……
fetch ps2;
}
(5)where子句中变量顺序应与索引字键顺序相同。
如:create index putlsz_idx on putlsz(zh ,rq,lsh)
索引字键顺序:首先是帐号zh,其次是日期rq,最后是流水号lsh,
颈的发生。Online的磁盘空间应采用裸设备方式(raw device),而不采用文件系统方式(cooked file),前者比后者处理速度要快
得多,且可靠性高。物理日志缓存空间应在30~50兆间即可,不必太大。设置cpu vp个数为cpu个数减1(若cpu个数为1,则cpu vp也
为1)。共享内存一般是系统内存的1/3~1/4,一个cpu vp配4个LRU队列,n个 LRU队列配n个页刷新进程page_cleaner,调谐使其
while (sqlca.sqlcode==0){
put mx_cur from
bmxh.zh ,bmxh,rq,bmxh,l sh,bmxh,jym,
bmx,pzhm,bmxh.bz,bmxh,fse,
bmxh.ye,bmxh.bdlsh,bmxh.bd rq,bmxh.czy,bmxh.dybz;
者理解掌握。
关键词 INFORMIX 数据库 运行效率 优化策略
INFORMIX数据库是一被广泛应用的关系型数据库,如何提高其应用性能是大家关心的话题,特别是随着库中数据量与应用处理交易
量的不断增多,其运行效率问题尤显突出。除了充分应用INFORMIX新品质,从INFORMIX-SE到INFORMIX-ONLINE高版本外,INF
一般我们对实时处理系统日志方式采用unbuffered log,在进行大批量数据集中装卸时采用no logging。如:
create database workdb in dbspacel with log;
create table satmx(
zh char (20),
rq date,
高速缓冲区读命中率大于95%,写命中率大于85%,设定多张网卡可改进性能,网络碰撞率应在8%以内。系统核心参数按informix各
版本提出的配置要求调整即可,若调整不对,在构造online时即可能不会成功。Informix-online数据服务器性能的调试往往在一定
的经验值基础上动态反复调整、测试才能获得最终满意的结果。INFORMIX数据库系统参数性能调整的优劣直接影响INFORMIX数据库运
一个“extent”空间分配则根据表数据的增加量估计值来分配,这样可减少数据分配碎片和空间浪费,提高数据库系统的效率。
2.引入表分割fragmentation,使数据在物理逻辑上分布均匀,有助于并行处理性能的提高。
3.建表时对表的记录锁方式根据应用处理的不同区别对待。批量处理的表采用页锁(page)方式,实时交易的表采用行锁(row)方式。锁方式可以在建表时确定,也可以用alter tabname lock mode(row)和alter tabname lock mode(page)命令改变。值得注意的是通过dbimport、dbexport转移生成的表其默认锁方式是页级锁,对于实时交易且操作频繁的表应改为行级锁方式,使用oncheck -pt命令可查得表的锁方式状态。
while (sqlca.sqlcode==0){
……
update satmxhz
set
sbrq=b.sbrq,
ye=b.ye,
lxjs=b.lxjs,
wdbs=wdbs+1,
dac=d
行效率,对其性能调整的具体方法与步骤,informix资料有较详尽说明,这里不作重点讨论。
二、 创建库表方式优化
1.数据库建库程序对每个数据表空间分配的优化。
在建表前将数据库每张表数据量大小作一估算,以便将表的第一个“extent”(物理上连续的页)空间分配尽量和估算值大小一致,下
begin work;
prepare insert_mx from ″insert into satmx
所以where子句变量顺序应是where zh=″11111″and rq=″06/06/1999″and lsh<1000,不应是where lsh<1000 and
rq=″06/06/1999″ and zh =″11111″等非索引字键顺序。
(6)用=替代matches的操作。
能。
如原为:
declare ps2 cursor for
select *,rowid
into b,id
from satmxhz
where zh[1,9]=vvjgbm
and bz=″0″
order by zh;
open ps2;
fetch ps2;
declare cur_jgl cursor with hold for
select jgbm,jgmc
into vvjgbm,vvjgmc
from putjgbm
order by jgbm
open cur_jgl;
fetch cur_jgl;
while(sqlca.sqlcode==0){
begin work;
insert into satmx select * from satmxh;
dele te from satmxh;
commit work;
四行程序即可实现,但若表中记录多的话,其运行效率远远不如前者的处理方式,因为insert cursor是先在共享内存缓存中处理,
fse money(16),