影响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 内页连续,因而能提高性能。
informix数据库默认隔离级别

informix数据库默认隔离级别Informix数据库默认隔离级别是指在没有显式设置隔离级别的情况下,Informix数据库会使用的默认隔离级别。
隔离级别是数据库管理系统中用来解决并发访问数据时可能产生的问题的一种机制。
在并发访问的情况下,多个事务同时对数据库进行读写操作,可能会导致数据不一致的问题,而隔离级别就是用来控制事务之间的隔离程度,从而保证数据的一致性和可靠性。
在Informix数据库中,默认的隔离级别是可重复读(REPEATABLE READ)。
可重复读是一种比较严格的隔离级别,它能够确保事务在执行期间不会受到其他并发事务的干扰。
具体来说,可重复读隔离级别的事务可以读取其他事务已提交的数据,但是不允许其他事务对其读取的数据进行修改,从而保证了读取的数据的一致性。
在可重复读隔离级别下,Informix数据库使用了多版本并发控制(MVCC)技术来实现事务的隔离。
MVCC技术通过为每个事务创建一个独立的版本来实现事务之间的隔离。
在事务开始时,数据库会为该事务创建一个版本,并在事务提交或回滚时将该版本删除。
这样,其他事务就不会读取到正在被修改的数据,从而避免了数据的不一致性问题。
除了可重复读隔离级别外,Informix数据库还支持其他几种隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交(READCOMMITTED)和串行化(SERIALIZABLE)。
这些隔离级别分别在事务的读取和修改操作上有不同的限制,可以根据具体的业务需求选择合适的隔离级别。
读未提交隔离级别是最低级别的隔离级别,它允许事务读取其他事务尚未提交的数据。
这种隔离级别虽然能够提高并发性能,但是可能会导致脏读(Dirty Read)问题,即读取到其他事务未提交的数据。
读已提交隔离级别是比较常用的隔离级别,它允许事务读取其他事务已提交的数据。
这种隔离级别可以避免脏读问题,但是可能会导致不可重复读(Non-repeatable Read)问题,即同一事务中多次读取同一数据时,可能会读到不同的值。
informix数据库的操作和维护

INFORMIX数据库的常用管理命令约定✧命令行中,<>括起来的内容不是实际要键入的内容,而是要键入的内容的说明。
✧命令行中,[]括起来的内容表示是可选项。
✧命令行中,a | b表示a或b选其中之一,为消除二义性,有时也用{a | b }表示。
✧命令行尾的\表示由于排版的限制一行写不下换到下一行,实际输入时可以不换行。
✧/* */括起来的斜体字表示注释。
1.简介INFORMIX-OnLine Dynamic Server(以下简称OnLine)提供了一个字符窗口界面的集成管理工具onmonitor,通过它可以完成除了数据备份外的大部分常用管理任务。
同时,OnLine还提供了一整套命令行管理工具,常用的有以下这些:命令功能oninit 启动OnLineonmode 改变模式和共享内存onstat 通过共享内存结构监视OnLine的操作状态oncheck 检查、修复、显示OnLine的磁盘结构ondblog 改变database的log方式onparams 修改逻辑和物理日志的配置参数onspaces 修改blobspace和dbspace的配置ontape 数据库备份和恢复工具onarchive 比ontape功能更强的备份和恢复工具dbexport 将整个database备份成文本文件格式dbimport 用文本文件格式的database备份重建databasedbschema 显示数据库、表的结构dbaccess 字符窗口界面的交互式SQL命令执行环境严格来说,最后四个命令不属于管理工具,但是因为在进行数据库管理时经常用到,所以也在此列出。
2.权限在Informix中,用户root和informix拥有最高的权限,可以执行所有的管理命令,可以查看所有database中的数据。
其次是属于informix组的用户,它们可以执行数据库server的启动和关闭等重要的管理命令。
其它不在informix组中的用户权限最低,只能执行一般的管理命令。
dbaccess 参数

dbaccess 参数
当使用 dbaccess 时,你可以指定一系列参数来控制其行为。
这些参数可以影响与数据库的连接方式、执行的操作类型以及输出格式等。
以下是一些可能用到的参数,以及它们的简要说明(注意:这里的参数可能会因 Informix 版本的不同而有所变化):-d 数据库名:指定要连接的数据库名称。
-e:启动 dbaccess 时直接进入 SQL 编辑器模式。
-f 文件名:从指定的文件中读取 SQL 语句并执行。
-l:列出数据库中所有表的名称。
-m:允许在批处理模式下执行多个 SQL 语句。
-n:不提示用户输入,通常与 -f 参数一起使用,用于非交互式执行。
-o 输出文件:将执行结果输出到指定的文件。
-p:打印 SQL 语句的执行计划,而不实际执行语句。
-r:以只读模式打开数据库,不允许执行任何修改操作。
-s:在屏幕上显示 SQL 语句的执行结果。
-t:设置事务处理模式,如自动提交或手动控制。
-u 用户名:以指定用户的身份连接到数据库。
-v:显示详细的执行信息,包括每个 SQL 语句的执行时间等。
-z:在执行完 SQL 语句后退出 dbaccess。
此外,dbaccess 还支持许多其他选项和参数,可以通过在命令行中键入 dbaccess -? 或查阅 Informix 的官方文档来获取完整的参数列表和详细说明。
请注意,由于 dbaccess 是一个功能强大的工具,错误地使用某些参数可能会对数据库造成不可逆的损害。
因此,在使用前务必仔细阅读相关文档,并在生产环境中谨慎操作。
Informix数据库的管理

第一章、 Informix数据库的管理一、 Informix数据库的安装(一)、安装顺序1、安装Application development tools.如:INFORMIX –SQL 、 INFORMIX-4GL等2、安装SQL application- programming interfaces.如:INFORMIX-ESQLL/C、INFORMIX-CLI等。
3、安装Database servers.如:INFORMIA-ONLINE DYNAMIC SERVER等。
4、安装Additional products.如:LANG SUPPLEMENT ZHCN等。
(二)、安装步骤1、检查操作系统是否运行正常。
2、以超级用户 root登陆,建立一个名为informix的用户组和一个名为informix的用户,使informix用户是informix用户组的唯一用户。
3、设置环境变量:# INFORMIXDIR=/home/informix(informix产品的安装目录)# export INFORMIXDIR# PATH= $INFORMIXDIR/ bin :$PATH# export PATH4、 # cd $INFORMIXDIR5、如介质为光盘,则应Mount 对应光盘的文件系统:# mount –r –v cdrfs /dev/cd0 /mnt如介质为磁带,则省略此步骤。
6、参照产品的License,用cpio 或tar 命令将光盘或磁带上的文件copy至当前目录:对光盘:# cpio –icvdumB 〈对应目录/文件名或# tar xvf 对应目录 / 文件名对磁带:# cpio –icvdumB 〈对应设备 / 文件名或# tar xvf 对应设备/文件名7、安装INFORMIX产品:如对SQL:# ./installsql8、如介质为光盘,则 umount 对应光盘的文件系统:# umount 介质设备名如介质为磁带,则省略此步骤。
informix的高可用

大家好,今天我们在这里探讨Informix数据库的高可用技术。
众所周知,用户的关键业务系统,特别是OLTP 系统,都要求提供24X7 不间断的应用服务,这就要求数据库系统能够提供强大的高可用能力。
这种能力不仅仅体现在主机及备机的接管方面,同时要能够提供远程容灾能力,以及本地的负载均衡能力。
针对上述对数据库的要求,Informix 从版本6 开始,就提供了HDR(High Availability Data Replication)技术,从Informix 11 开始,Informix 数据库提供了SDS(Shared Disk Secondary)、RSS(Remote Standalone Secondary)、CLR(Continuous Log Restore) 等高可用集群技术,提供了更加强大的高可用能力。
尤其是从Informix 11.5 开始其高可用技术发生了质的飞跃,HDR、SDS、RSS 备机都具备可读可写的能力,提供了更强大的负载均衡能力。
本研讨会,我们就针对Informix 高可用技术不同方案的特点、技术实现和使用范围等方面与大家共同探讨。
informix 的高可用技术SDS(Shared Disk Secondary)、RSS(Remote Standalone Secondary)、CLR(Continuous Log Restore) 分别适用的场景是那些呢?条件是什么呢?SDS是双主机同时读写共享磁盘,一般用在大型联机交易应用业务,和Oracle RAC相似。
RSS 是广域网异步HDR,用在数据库级的灾备环境。
CLR是在网络不太好的情况下的脱机连续逻辑日志的数据恢复,用于数据库备份。
SDS共享磁盘方案,类似ORACLE RAC,提供高可用性和负载均衡情况,但是不具备存储容灾能力。
提供快速的故障切换能力。
HDR,近距离双机方案,一般使用于同机房、2机房、同城2中心的双机方案,提供数据灾备能力。
Informix数据库常用命令介绍

华为产品维护资料汇编 TELLIN智能网维护资料数据库基础知识目录目录第1章 Informix数据库常用命令介绍 (1)1.1 概述 (1)1.1.1 oninit (1)1.1.2 dbexport (2)1.1.3 dbimport (4)1.1.4 dbload (5)1.1.5 dbschema (7)1.1.6 oncheck (8)1.1.7 onload (9)1.1.8 onlog (10)1.1.9 onmode (11)1.1.10 onparams (13)1.1.11 onspaces (13)1.1.12 onstat (14)1.1.13 ontape (19)1.1.14 onunload (21)第1章 Informix数据库常用命令介绍1.1 概述Informix数据库服务器提供了在shell提示符下直接执行管理任务功能的应用程序。
列出这些应用程序:表1-1提示符下直接执行管理任务功能的应用程序以下对这些应用程序逐一简要说明。
1.1.2 oninit1. 功能说明oninit 应用程序用于改变系统的运行模式。
数据库有六种工作模式,它们是:离线(off-line)不运行状态●静模式(quiescent)在此模式下,用户不能连接到数据库,但可用onstat等命令查看数据库信息●在线(on-line)数据库运行状态●只读(read-only)只能读数据库但不能写●恢复(recovery)是一种临时状态,存在于从离线模式到静模式之间●关闭(shutdown)是一种临时状态,存在于从在线模式到静模式或离线模式oninit命令将在离线(off-line)状态的数据库启动为在线(on-line)模式,并初始化共享内存(shared memory),在作初始化之前,应先设置环境变量INFORMIXSERVER,否则数据库不建立sysmaster表,必须以root或informix注册才能执行本命令,本命令不但能初始化共享内存,还能初始化磁盘空间。
informix数据库的查询优化技术

informix数据库的查询优化技术1.合理使用索引索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。
现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。
索引的使用要恰到好处,其使用原则如下:●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。
比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。
如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
●如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
●使用系统工具。
如Informix数据库有一个tbcheck工具,可以在可疑的索引上进行检查。
在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性,必要时进行修复。
另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。
2.避免或简化排序应当简化或避免对大型表进行重复的排序。
当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。
以下是一些影响因素:●索引中不包括一个或几个待排序的列;●group by或order by子句中列的次序与索引的次序不一样;●排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。
如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。
3.消除对大型表行数据的顺序存取在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响。
比如采用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查询就要查询10亿行数据。
INFORMIX 数据库资料

INFORMIX数据库技术目录数据库对象数据块——————————————————4 数据空间—————————————————4 数据库——————————————————4 数据表——————————————————4 索引———————————————————6 视图———————————————————7 查询———————————————————7 存储过程—————————————————8 触发器——————————————————10 组合———————————————————11性能调节语句分析Set Isolation ———————————————11 Set Optimization —————————————11 Set Pdqpriority ——————————————12 Set Lock Mode ——————————————12 Set Log —————————————————12 Lock Table ————————————————12 Set Transaction ——————————————12常用命令Set Explain ———————————————12Unload to ————————————————12 Load ——————————————————12常用实用程序onmonitor ————————————————13 dbaccess ————————————————13 dbschema ————————————————13dbexport、dbimport ———————————13onstat ————————————————13oncheck ————————————————13onmode ————————————————13其他—————————————————13Esql语法头文件的引用———————————————13嵌入式语法————————————————13执行动态语句———————————————14游标使用分析———————————————15ESQL数据类型——————————————19UNIX编译命令——————————————20环境和配置文件sqlhosts ------------------------------- 20系统安全------------------------------------------ 21配置文件(onconfig) ---------------------------------- 211 ADTERR ---------------------------------------- 212 ADTMODE -------------------------------------- 213 ADTPATH ---------------------------------------- 214 ADTSIZE ----------------------------------------- 215 AFF_NPROCS ----------------------------------- 226 AFF_SPROC ------------------------------------- 227 MULTIPROCESSOR ---------------------------- 228 NUMCPUVPS ------------------------------------- 229 NUMAIOVPS ------------------------------------- 2210 SINGLE_CPU_VP --------------------------------- 2311 ALARMPROGRAM ------------------------------- 2312 CONSOLE ---------------------------------------- 2313 MSGPATH ---------------------------------------- 2314 BUFFERS ---------------------------------------- 2315 SHMADD ---------------------------------------- 2416 SHMBASE --------------------------------------- 2417 SHMVIRTSIZE ---------------------------------- 2418 SHMTOTAL -------------------------------------- 2419 STACKSIZE -------------------------------------- 2420 CHUNKS ----------------------------------------- 2521 DBSPACE ---------------------------------------- 2522 DBSPACETEMP --------------------------------- 2523 TBLSPACES -------------------------------------- 2524 ROOTNAME-------------------------------------- 2625 ROOTOFFSET ------------------------------------ 2626 ROOTPATH --------------------------------------- 2627 ROOTSIZE----------------------------------------- 2628 SERVERNUM ------------------------------------- 2629 DBSERVERNAME -------------------------------- 2730 DBSERVERALIASE ------------------------------ 2731 NETTYPE ---------------------------------------- 2732 MIRROR ----------------------------------------- 2733 MIRRORPATH ----------------------------------- 2834 MIRROROFFSET -------------------------------- 2835 LOGFILES -------------------------------------- 2836 LOGBUFF ---------------------------------------- 2837 LOGSIZE ----------------------------------------- 2938 LOGMAX ---------------------------------------- 2939 DUMPDIR --------------------------------------- 2940 DUMPCNT -------------------------------------- 2941 DUMPCORE ------------------------------------- 2942 DUMPGCORE ------------------------------------ 2943 DUMPSHMEM ----------------------------------- 3044 TAPEDEV ---------------------------------------- 3045 TAPEBLK ---------------------------------------- 3046 TAPSIZE ---------------------------------------- 3147 LTAPEDEV -------------------------------------- 3148 LTAPEBLK -------------------------------------- 3149 LTAPESIZE -------------------------------------- 3150 CHPTINTV AL ------------------------------------ 3151 CLEARNERS ------------------------------------- 3152 DATASKIP ---------------------------------------- 3253 NOAGE -------------------------------------------- 3254 FILLFACTOR -------------------------------------- 3255 OPTCOMPIND ------------------------------------ 3256 RESIDENT ----------------------------------------- 3357 STAGEBLOB --------------------------------------- 3358 TXTIMEOUT -------------------------------------- 3359 USEOSTIME -------------------------------------- 3360 TRANSACTIONS ------------------------------ ----- 3361 LOCKS ------------------------------------------ 3462 DEADLOCK_TIMEOUT ------------------------- 3463 USERTHREADS ---------------------------------- 3464 PHYSDBS ---------------------------------------- 3565 PHYSFILE --------------------------------------- 3566 PHYSBUFF --------------------------------------- 3567 MAX_PDQPRIORITY ---------------------------- 3568 PDQPRIORITY ---------------------------------- 3669 DRAUTO ---------------------------------------- 3670 DRINTERV AL ----------------------------------- 3671 DRLOSTFOUND ----------------------------------- 3672 DRTIMEOUT ------------------------------------- 3773 DS_MAX_QUERIES ------------------------------- 3774 DS_MAX_SCANS --------------------------------- 3775 DS_TOTAL_MEMORY ---------------------------- 3976 LRUS ------------------------------------------- 3977 LRU_MAX_DIRTY ------------------------------- 3978 LRU_MIN_DIRTY --------------------------------- 4079 LTXEHWM --------------------------------------- 4080 LTXHWM ----------------------------------------- 4081 OFF_RECVRY_THREADS --------------------------4182 ON_RECVRY_THREADS ---------------------------- 4183 RA_PAGES ---------------------------------------- 4184 RA_THRESHOLD --------------------------------- 42一数据库对象分析:数据库对象的建立,修改与删除操作一般不应放在一个事务中,它的执行会自动导致提交动作,将破坏事务的完整性。
影响Informix数据库性能的主要参数...

影响Informix数据库性能的主要参数...影响CPU使用率的配置参数和环境变量Online 配置文件onconfig中的下列参数对CPU的利用率有明显的影响:NUMCPUVPSSINGLE_CPU_VPMULTIPROCESSORAFF_NPROCSAFF_SPROCNUMAIOVPSOPTCOMPANDNETTYPENUMCPUVPS、MULTIPROCESSOR和SINGL_CPU_VPNUMCPUVPS参数规定了Online 开始启动的CPU VP的数量。
分配的CPU VP的个数不要超过可以为它们服务的CPU的个数。
对于单处理器的计算机系统,Informix 建议使用一个CPU VP。
对于有4个以上CPU,主要用做数据库服务器的多处理器系统,Informix 建议设置NUMCPUVPS的值等于处理器总数减一。
对于双处理器系统,运行两个CPU VP可能会改善性能。
这需要监控操作系统的CPU使用情况。
可以使用操作系统命令sar 或vmstat。
如果运行多个CPU VP,应将MULTIPROCESSOR 设置为1,当设置MULTIPROCESSOR为1时,Online 以对应于多处理器的方式执行锁定。
否则,设置该参数为0。
注意:如果设置SINGLE_CPU_VP参数为,则NUMCPUVPS 参数的值也必须是1,如果后者大于1,Online就不能初始化并显示下面的错误信息:Cannot have 'SINGLE_CPU_VP' now-zero and 'NUMCPUVPS'greater than 1AFF_NPROCS 和 AFF_SPROC在支持Online和客户应用的系统上,可以通过操作系统把应用连接到某些特定的CPU。
这样做可以有效地保留剩余的CPU给Online CPU VP使用,它们是用AFF--NPROCES和AFF_SPROC配置参数连接到剩余CPU的。
informix数据库常用命令

informix数据库常用命令一、onstat命令集1、onstat -说明:查看数据库当前的状态用法:onstat -2、onstat -c说明:查看数据库的配置文件用法:onstat -c3、onstat -d说明:查看数据库空间的使用情况用法:onstat -d4、onstat -l说明:查看数据库逻辑日志的备份情况及逻辑日志的状态用法:onstat -l5、onstat -m说明:查看最近的数据库日志信息用法:onstat -m6、onstat -g sql说明:查看数据库的所有客户端的连接情况用法:onstat -g sql7、onstat -g sql <sid>说明:查看一个指定的客户端连接执行的SQL语句用法:onstat -g sql <sid>二、oncheck命令集1、oncheck -cc [数据库名]说明:检查一个或所有的数据库的系统目录用法:oncheck -cc [数据库名]2、oncheck -cD 数据库名[:表名]说明:检查一个数据库或数据库中的一个表的数据用法:oncheck -cD 数据库名[:表名]3、oncheck -cI 数据库名[:表名]说明:检查一个数据库或数据库中的一个表的索引用法:oncheck -cI 数据库名[:表名]4、oncheck -pt 数据库名:表名说明:检查一个表所占用的空间大小(EXTENT数)用法:oncheck -pt 数据库名:表名三、备份相关命令1、onbar说明:备份数据库的数据或日志到磁带库中用法:全备份: onbar -b -w -L 0备份逻辑日志:onbar -b -l2、dbschema说明:生成数据库的库表结构用法:整个数据库:dbschema -d 数据库名 -ss 脚本文件名一个数据库中的表:dbschema -d 数据库名 -t 表名 -ss 脚本文件名3、dbexport说明:手工备份一个数据库到磁盘中用法:dbexport -ss 数据库名四、其他命令1、oninit说明:启动一个数据库服务器用法:oninit2、onmode -ky说明:停止一个数据库服务器用法:onmode -ky3、onmode -z <sid>说明:停止一个数据库的客户端连接(SESSION)用法:onmode -z <sid>1. dbexport将数据库以ASCII方式下载。
Informix常见错误处理方法思路

长事务
• 故障处理: 根据数据库日志里面所提供的信息可以很方便的发现具体是哪一个事务造 成了长事务。系统在将某个事务判定为长事务以后就会自动对其进行回滚 操作。事后可以有针对性的调整应用将大的事务划分为小事务进行提交; 避免一个活动事务长时间没有后续的操作;提供充足的逻辑日志空间,这 里所指出的不仅是空间的总量需要增加,逻辑日志的个数也是应该增加的 ,因为判断的标准是以逻辑日志的使用个数所占比例来确定的。在 INFORMIX 9.3X 以后的版本中可以通过动态增加逻辑日志的手段避免由于 长事务带来的一些不良影响,在长事务回滚过程中如果逻辑日志空间被消 耗完毕,如果 DYNAMIC_LOGS 设置为 2,数据库服务器会自动在最后创 建的逻辑日志所存在的 dbspace 上查找空余空间,按照最后创建的逻辑日 志的大小自动在当前逻辑日志之后新增逻辑日志,如果不能满足需要则会 创建失败,需要管理员手工添加。
Update Statistics的作用
为了提高数据库的效率,INFORMIX提供了一个基于成本的查 询优化器, 执行update statistics语句的作用就是将您创建的数据库 表的有关统计信息更新到系统sysmaster的相关表中,以便查询优化 器选择最佳的执行路径。当sysmaster库中没有相应的统计信息,或 者统计信息不十分准确时,优化器便无法制定一个行之有效的查 询策略,其结果必然是进行大量极其可怕的顺序扫描,产生严重 的性能问题。
address
number flags uniqid begin
size used %used
(注:红色部分为异常状态,如绿色部分也被使用完,数据库将出现异常。版 面上只显示出该店出现异常时用onstat –l监控到的部分信息。)
逻辑日志满
Informix性能调优案例讲解(转)

Informix性能调优案例讲解(转)概述在实际的⽣产运⾏环境中,笔者在国内很多客户现场都看到开发⼈员和系统管理⼈员遇到很多有关于 Informix 数据库引起的性能问题,进⽽被多次问起如何进⾏ Informix 数据库性能调优,笔者根据⾃⼰在⼯作中对 Informix 数据库的使⽤经验积累写下这篇⽂章。
性能优化原则包括:性能规划:深⼊了解应⽤与数据库的交互特征,确⽴良好的设计、开发、测试迭代过程,上线前消除模型上的性能瓶颈。
实例调优:建⽴性能基准,对⽐调节数据库、操作系统、存储、⽹络等的配置,主动监控、消除瓶颈。
SQL 调优:书写⾼效 SQL,优化相关数据库对象,充分借助优化器,确定最佳执⾏计划。
性能优化流程1. ⾸先执⾏下⾯的初始检查:获取直接⽤户的使⽤反馈,确定性能⽬标和范围。
获取性能表现好与坏时的操作系统、数据库、应⽤统计信息。
对数据库做⼀次全⾯健康检查。
2. 根据收集的信息,以及对应⽤特性的了解,构建性能概念模型,明确性能瓶颈所在,以及导致性能的根本原因。
⾸先应该排除操作系统、硬件资源造成的瓶颈。
然后针对数据库系统性能进⾏分析必要时,还需要检查应⽤⽇志,因为系统性能问题也可能由于应⽤⾮ SQL 部分造成瓶颈。
3. 提出⼀系列针对的优化措施,并根据它们对性能改善的重要程度排序,然后逐⼀加以实施。
不要⼀次执⾏所有的优化措施,必须逐条尝试,逐步对⽐。
4. 通过获取直接⽤户的反馈验证调节是否已经产⽣预期的效果,否则,需要重新提炼性能概念模型,直到对应⽤特性了解进⼀步准确。
5. 重复上述,直到性能达到⽬标或由于客观约束⽆法进⼀步优化。
当从操作系统层⾯判断系统存在瓶颈并且是数据库引起的,那么可以从下⾯的流程图来解决图 1. 性能诊断优化流程性能诊断优化流程()典型性能问题案例案例 1:数据库应⽤突然变慢问题特征数据库应⽤突然变慢,查看系统信息,发现 CPU 空闲突然很低,IO 性能没有明显恶化。
处理步骤⾸先,需要排除操作系统上其他应⽤程序的问题。
Informix数据库基本操作和常用配置

Windows
创建动态服务
开始-> Informix Dynamic Server11.50-> server instances manager选择create new创建一个动态服务,需要记住的信息有端口号、服务名和密码,其他信息用默认的即可。端口号从8098开始,可以自己设置,再次创建新的服务时会自动增加,服务名最好自己设置,默认的服务名很长,不方便记,这里我以test为例。如果系统中装了informix数据库,登陆系统时会默认以informix用户登陆,最好所有对数据库的操作均在informix用户下进行,不赞成在windows用户下操作,会导致权限不一致,连接不上数据库。完成后会弹出一个是否初始化动态服务的选项,选择是,初始化完成后动态服务就创建完成了,以下简称IDS。此时会在informix安装目录的etc目录下生成一个ONCONFIG.test(test为服务名)配置文件。
为了减少死锁或者锁等待现象,informix11.5还提供一些新特性来提高应用系统并发执行效率,这里只介绍下我们用到的。通过设置USRLASTCOMMITTED参数来减少锁等待和死锁现象,通常该参数设置为ALL即可,USELASTCOMMITTED选项可具有以下四个值中的任意一个:
1.如果值为“COMMITTED READ”,那么当数据库服务器尝试读取处于“已落实读”或“读已落实”隔离级别的行而遇到互斥锁时,它将读取最近落实的数据版本。
扩展表空间
创建好动态服务后我们可以通过开始-> Informix Dynamic Server11.50->test打开控制台。在windows下装完informix数据库后还会生成一个IFMXDATA文件夹,与安装目录相同,每创建一个IDS就会在该文件中生成一个以服务名命名的文件夹,当选择初始化动态服务的时候就会在对应的文件夹中生成两个空间文件,一个rootdbs_dat.000是一个informix内部使用的默认空间,rootdbs我们一般都不用。另一个test_dat.000则是我们主要使用的,以后建的数据库都是放在这个表空间里的。Test_dat.000默认大小为100M,一般都需要扩展一个表空间上去,扩展表空间的方法:先去\IFMXDATA\test目录下新建一个文件test_dat.001,然后在控制台输入命令:onspaces -atest-p c:\IFMXDATA\test\test_dat.001 -s 300000 -o 0,-a是添加,-p是路径,-s是大小,-o是偏移量,0为偏移量的大小,偏移量类似一个开始的地址,为0,就是从1开始,为10,则从11开始。若在一个文件上建一个100大小的chunk(chunk,区,块informix术语单位,不多解释),偏移量设为0,则这个chunk就占据了1-100这段空间,若在这个文件上再建一个100大小的chunk,1-100已经被占用,则偏移量要设为100,即从101开始。注意,对于同一文件是要往后累加的,不同的文件则都可以从0开始,不过建议如果分配的空间太大,最好能预留一点给磁盘信息。完成后可以用onstat–d查看表空间信息。如果不选择初始化,这两个文件的大小都为0,需要手动修改,用这个命令即可,其中-c是创建:onspaces -c -dtest-p C:\IFMXDATA\test\test_dat.000 -o 0 -s 300000,rootdbs不常用,可以不用修改。
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优化1

informix的性能优化2007年01月06日星期六下午 01:22informix的性能优化以下是我用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_HASHMAX onstat -g dic确定数据字典缓冲区是否接近容量存储过程缓冲区没有限制,可以调整参数PC_HASHSIZE和PC_POOLSIZE onstat -g prc确定存储过程缓冲区是否接近容量数据分布缓冲区可以调整参数DS_HASHSIZE和DS_POOLSIZEonstat -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查询优化update statistics小注给定查询的不同执行策略可能会有不同的代价,构造具有最小查询执行代价的查询执行计划是数据库系统的职责。
Informix数据库参数设置说明

Informix数据库参数设置说明
本说明从INFORMIX数据库的认证授权功能、安全日志功能,和其他自身安全配置功能提出安全要求。
1.账号
INFORMIX应提供账号管理及认证授权功能,并应满足以下各项要求。
编号:安全要求-设备-INFORMIX-配置-1
编号:安全要求-设备-INFORMIX-配置-2
2.口令
编号:安全要求-设备-INFORMIX-配置-4
编号:安全要求-设备-INFORMIX-配置-5
编号:安全要求-设备-INFORMIX-配置-29-可选
编号:安全要求-设备-INFORMIX-配置-6-可选
编号:安全要求-设备-INFORMIX-配置-7-可选
3.授权
编号:安全要求-设备-INFORMIX-配置-9
4.日志
编号:安全要求-设备-INFORMIX-配置-12
编号:安全要求-设备-INFORMIX-配置-28
5.其他
编号:安全要求-设备-INFORMIX-配置-36-可选
编号:安全要求-设备-INFORMIX-配置-37-可选。
informix的使用技巧

安装数据库管理实用程序IDS联网内核配置参数备份策略从sysmaster或者sysutils实例中监控备份小技巧影响CPU使用率的配置参数常用指令用法说明数据复制技术如何监控IDSIDS数据库维护技巧informix的用户权限管理基本概念安装数据库:1.配置informix安装空间:1G左右,用来存放数据库的安装文件,一般是/Informix2.创建informix用户和用户组3.对informix软件进行解包,有以下几种方法:cpio –icvdumB < /mnt/cdrom/*.cpirpm –iv –prefix $INFORMIXDIR /mnt/cdrom/*.rpmtar –xvfb 20 /mnt/cdrom/*.tar4.配置informix安装环境变量:INFORMIXDIR=/informixPATH=$INFORMIXDIR/bin:$PATHINFORMIXSERVER=szxaONCONFIG=onconfig.SZXATERMCAP=$INFORMIXDIR/etc/termcapTERM=vt1005.安装informix软件(用informix用户)/Informix/installserver安装完成后,会提示用root用户运行/Informix/RUN_AS_ROOT.server至今,informix软件安装完毕6.阅读版本说明:/$INFORMIXDIR/release/en_us/03337.配置/etc/services文件:Service_name port/protocol alias例如:sqlexecA 1526/tcp # SZXA informix database usesqlexecB 1527/tcp # SZXB informix database use8.配置sqlhosts文件:dbservername nettype hostname service_name例如:szxa onsoctcp S1_C_SZX_SHUJUKU 1526dbserver_name 网络接口协议主机服务别名注意,系统使用的网络接口类型,可以从版本说明文件获得9.生成磁盘存储:一般使用裸设备,并生成磁盘设备的链接,这样,如果磁盘设备失败,也可以把链接改变成指向可操作的磁盘ln -s /dev/rrootdbs /Informix/data/rootdbs10.配置onconfig文件:(第一次初始化只是针对于rootdbs,参数配置可以相对简单)ROOTOFFSET –指定KB数,确定在原始设备中移动多长距离之后再生成根dbspace PHYSFILE –第一次初始化,设置临时值2048,LOGFILES –第一次初始化,设置临时值3LOGSIZE –第一次初始化,设置临时值500TAPEDEV(存档),LTAPEDEV(日志存档)-- /dev/null,这样就可以运行档案程序ontape而不实际把数据写入磁带中SERVERNUM –运行多个服务器时确定服务器的共享内存地址,唯一值DBSERVERNAME –应该与sqlhosts文件中的项目相符DBSPACE TEMP –可以有多个dbspace组成,这样,每个排序操作就会平均分配在每个tempdbspace中进行DEADLOCK_TIMEOUT –等待多长时间确认某操作遭遇死锁NETTYPE –可选参数,配置如下协议类型轮询线程数每个轮询希望的并发连结数处理器类例如:soctcp,2,150,NETRESIDENT –驻留系统物理内存与否NUMCPUVPS –指定对实例启动的CPU类虚拟处理器个数,按照处理器的个数而定可以用onstat –g glo进行调整SINGLE_CPU_VP –指定服务器不运行多个CPU虚拟处理器,设置为true(1)使服务器跳过管理锁存资源的大部分代码,从而提高性能LOCKS –服务器对服务器线程分配的最大锁数,用onstat –p监控状态,如果ovlocks一直大于0,需要增加实例所用的锁数BUFFERS –定义实例分配的缓冲区数,检查onstat –p输出的缓冲读和缓冲写,调整该参数使这些值最大化CLEANERS –指定所需的页面清理线程数,用于把数据从共享内存写入磁盘。
informix数据库配置参考

智能网数据库配置参考2006-02-101、准备数据设备(1)、如果数据库设备采用文件系统,以informix用户登录,按照下列步骤,创建数据库设备文件,同时修改权限mkdir /informix/indbscd /informix/indbstouch /informix/indbs/rootchktouch /informix/indbs/phychktouch /informix/indbs/logchktouch /informix/indbs/tmpchktouch /informix/indbs/datachk01touch /informix/indbs/datachk02touch /informix/indbs/datachk03touch /informix/indbs/datachk04……chown informix:informix /informix/indbs/*chmod 664 /informix/indbs/*(2)、如果数据库设备采用磁盘陈列的裸设备,按照下列步骤,创建数据库设备文件,同时修改权限●按照文档列表,确认主机上已经建好了所有的逻辑卷(在相应的目录下检查是否存在相应的文件名/dev/vgin/lv_datachunk01等)●如果数据库设备采用磁盘陈列的裸设备,以root用户登录,修改逻辑卷的权限⏹cd /dev/vgin/⏹chown informix:informix /dev/vgin/*⏹chmod 664 /dev/vgin/*●以informix用户登录,建立连接,以下内容可以放在一个脚本文件中执行mkdir /informix/indbscd /informix/indbsln -s /dev/vgin/rlv_rootchunk /informix/indbs/rootchkln -s /dev/vgin/rlv_phychunk /informix/indbs/phychkln -s /dev/vgin/rlv_logchunk /informix/indbs/logchkln -s /dev/vgin/rlv_tmpchunk /informix/indbs/tmpchkln -s /dev/vgin/rlv_datachunk01 /informix/indbs/datachk01ln -s /dev/vgin/rlv_datachunk02 /informix/indbs/datachk02ln -s /dev/vgin/rlv_datachunk03 /informix/indbs/datachk03ln -s /dev/vgin/rlv_datachunk04 /informix/indbs/datachk04……注意:以下所有操作都是以INFORMIX登录执行2、设置环境变量,将下面的环境变量加入setenv.in中,并将setenv.in文件加入用户的.profile文件中(LINUX加入.bash_profile文件中)INFORMIXDIR=/informixPATH=$INFORMIXDIR/bin:$PATHexport INFORMIXDIR PATHINFORMIXSERVER=ol_inONCONFIG=onconfig.inLD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$INFORMIXDIR/l ib/cli:$INFORMIXDIR/lib/dmiSHLIB_PATH=$LD_LIBRARY_PATHexport INFORMIXSERVER ONCONFIG LD_LIBRARY_PATH SHLIB_PATH3、配置ONCONFIG文件cp /informix/etc/onconfig.std /informix/etc/onconfig.in修改ONCONFIG文件中的如下参数ROOTPATH /informix/indbs/rootchkROOTSIZE 1024000MSGPATH /informix/online_in.logALARMPROGRAM /informix/etc/log_full.shTAPEDEV /dev/nullLTAPEDEV /dev/nullDBSERVERNAME ol_inNETTYPE soctcp,1,200,CPULOCKS 1000000BUFFERS 100000SHMVIRTSIZE 204800SHMADD 20480LOGSMAX 100DBSPACETEMP tmpdbs4、配置SQLHOSTS文件cp /informix/etc/sqlhosts.std /informix/etc/sqlhosts在sqlhosts文件中加入下面一行ol_in onsoctcp 192.168.5.1881526注:第一项为数据库服务器名,第二项为网络协议,第三项为数据库服务器所在的主机的主机名,第四项为服务端口名)。
Informix数据库性能常见问题典型情况浅析

数 据库 进 程 占用 了大 量 C U资 源 时 ,往往 是 在对 大 表做 P 全 表扫 描 。 找出 问题 S L的办法 如下 : 执行 o s tgat Q 先 nt — c 得到 a 当前 正在 运行 的 slxc线 程 , 根据 该 线程 的 地址信 息 。 qee 再 利用 o s tU得 到 其 ssi nt — a es n信 息 ,最 后根 据 o s tgsl 到 当前 o n t — q 得 a
摘 要 : 据 库 配 置 安 装 完 成 投 入 运 行 后 , 据 库 运 行 的 性 能 就 成 为 数 据 库 管理 人 员 ( B 的 一 个 重 要 任 务 。根 据 数 数 D A)
教 学过 程 中对 Ifr x数 据库 的使 用 , 结 出 了一 些常 见性 问题 的 处理 经验 , 望能 和大 家共 同交流 。 nomi 总 希
第 9 第4 卷 期
2 1年 4 00 月
软 件 导 刊
So t r . NO. 9
Ap , 01 t2 0
If r x数 据库性 能常见 问题典型情况浅析 no mi
张 生 成
( 酒泉职 业技 术 学院 , 肃 酒 泉 7 5 0 ) 甘 3 0 0
法 :p aes t t s o bemy tb c l) u d t t i i r al a sc f t a (o1 ;
_
正在 执行 的 S L Q 。具体 示 例如 下 ( 方便 阅读 , 出略 有 改动 , 为 输
增加 了含 义行 , 除 了无关 信 息 ) 删 :
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
影响Informix数据库性能的主要参数影响CPU使用率的配置参数和环境变量Online 配置文件onconfig中的下列参数对CPU的利用率有明显的影响:∙ NUMCPUVPS∙ SINGLE_CPU_VP∙ MULTIPROCESSOR∙ AFF_NPROCS∙ AFF_SPROC∙ NUMAIOVPS∙ OPTCOMPAND∙ NETTYPE NUMCPUVPS、MULTIPROCESSOR和SINGL_CPU_VPNUMCPUVPS参数规定了Online 开始启动的CPU VP的数量。
分配的CPU VP 的个数不要超过可以为它们服务的CPU的个数。
∙对于单处理器的计算机系统,Informix 建议使用一个CPU VP。
∙对于有4个以上CPU,主要用做数据库服务器的多处理器系统,Informix 建议设置NUMCPUVPS的值等于处理器总数减一。
∙对于双处理器系统,运行两个CPU VP可能会改善性能。
这需要监控操作系统的CPU使用情况。
可以使用操作系统命令sar 或vmstat。
如果运行多个CPU VP,应将MULTIPROCESSOR 设置为1,当设置MULTIPROCESSOR 为1时,Online 以对应于多处理器的方式执行锁定。
否则,设置该参数为0。
注意:如果设置SINGLE_CPU_VP参数为,则NUMCPUVPS 参数的值也必须是1,如果后者大于1,Online就不能初始化并显示下面的错误信息:Cannot have 'SINGLE_CPU_VP' now-zero and 'NUMCPUVPS' greater t han 1AFF_NPROCS 和AFF_SPROC在支持Online和客户应用的系统上,可以通过操作系统把应用连接到某些特定的CPU。
这样做可以有效地保留剩余的CPU给Online CPU VP使用,它们是用AFF--NPROCES和AFF_SPROC配置参数连接到剩余CPU的。
AFF_NPROCS指定了连接到Online的CPU VP上的CPU的个数。
连接一个CPU VP 到一个CPU 会引起该CPU VP在这个CPU上的排它性运行。
AFF_SPROC指定了Online把CPU VP连接到CPU上时所启动的CPU。
AFF_NPROCS规定了计算机上可以帮定CPU VP的CPU的数目。
NUMCPUVPS参数指定了Online将启动的CPU VP的数目,AFF_SPROC参数指定了Online连接第一个CPU序号。
例如,某个Online 系统所在的硬件平台有8个CPU,AFF_NPROCS 设置为8(即可用于帮定CPU VP的CPU有8个),NUMCPUVPS设置为3,AFF_SPROC 设置为5,则3个CPU VP需要帮定到CPU上,是从第五个CPU开始,帮定到第五、六、七个CPU上。
需要注意的是,AFF_SPROC的取值是在0和(AFF_NPROCS - NUMCPUVPS + 1)这两个值之间的,不能大于后者。
NUMAIOVPS参数NUMAIOVPS指定最初产生的AIO VP的数目。
如果所在的操作系统不支持核心异步I/O(KAIO),Online使用AIP VP来处理所有数据库I/O请求。
推荐的AIP VP数目取决于Online 使用的硬盘个数。
如果所在操作系统不支持或没有使用KAIO,则Informix建议对包含数据库表的每一个磁盘分配一个AIO VP。
可以对Online 频繁访问的每六块增加额外的AIO VP。
如果所在的操作系统使用KAIO VP,CPU VP将直接向操作系统发出原始的I/O 请求。
在这种情况下,可以只配置一个AIO VP,此时AIO VP只处理文件系统方式的chunk。
如果文件系统方式的chunk有增加时,可以增大AIO VP的数目。
分配AIO VP的目的是要分配足够的AIO VP以便I/O请求队列的长度保持很短,即队列中保持尽可能少的I/O请求。
OPTCOMPINDOPTCOMPIND参数帮组优化程序为应用选择合适的访问方法。
∙如果OPTCOMPIND等于0,优化程序给予现存索引优先权,即使在表扫描比较快时。
∙如果OPTCOMPIND设置为1,给定查询的隔离级设置为Repeatable Read时,优化程序才使用索引。
∙如果OPTCOMPIND等于2,优化程序选择基于开销选择查询方式。
,即使表扫描可以临时锁定整个表。
NETTYPENETTYPE参数为Online实例支持的每个连接类型配置轮询线索。
如果sqlhosts文件中支持一个以上的接口或协议的连接,就必须对每个连接类型规定独立的NETTYPE参数。
也即,每中与数据库服务器名字有关的连接类型都需要单独指定一个NETTYPE参数。
每个用NETTYPE表项配置或动态加入的轮询线索在不同的VP上运行,轮询线索可以在两类VP上运行:NET VP和CPU VP。
为得到最佳性能,Informix建议使用NETTYPE表项为CPU VP类只分配一个轮询线索,将其余轮询线索轮询线索分配给NET VP。
分配给任何一种连接类型的轮询线索不得超过NUMCPUVPS的取值。
单CPU计算机上每个轮询线索的最佳连接个数不超过300,多CPU机上可多达350个。
但一个轮询线索最多支持1,024甚至更多的连接。
NETTYPE的配置格式如下:NETTYPE connection_type,poll_threads,c_per_t,vp_class∙ connection_type 标识轮询线索分配的连接协议。
∙ poll_threads 是分配给该连接类型的轮询线索数目。
对任何连接类型,这个值不能超过NUMCPUVPS值。
∙ c_per_t 是每个轮询线索的连接数目。
可以用如下公式计算这个值:c_per_t = connections / poll_threadsconnections 是所希望指定的连接类型支持的最大连接数。
对于共享内存连接(ipcshm),该值应该加倍以获得最好的性能。
∙ vp_class 是可运行轮询线索的VP类。
如果CPU VP上只运行一个轮询线索,那么指定为CPU VP。
为了达到最好性能,当要求多个轮询线索时应该指定为NET VP。
如果c_per_t的值超过了350,而当前连接的轮询线索数小于NUMCPUVPS,可以增加轮询线索数目,但不能超过NUMCPUVPS,然后重新计算c_per_t的取值。
注意:每个ipcshm连接需要一个信号量。
当c_per_t的值很大时,对于某些操作系统要相应增加信号量。
如何监控系统CPU的使用情况: 1. 使用UNIX的监控工具sar或vmstat来监控CPU的使用情况。
例:sar 5 10%usr %sys %wio %idle10:06:22 34 1 0 6510:06:27 34 2 0 6410:06:32 34 1 0 6510:06:37 17 1 0 8210:06:47 1 1 0 98连续监控%idle来确认CPU没有超载。
如果%sys的值很大则可能应用有问题。
2. 监控CPU vp的方法onstat -g gloIndividual virtual processors:vp pid class usercpu syscpu total可以通过该监控看出CPU忙占用的时间(隔60秒分别监控结果)。
如果非常忙,则需要增加CPU VP。
onstat -g reaReady threadstid tcb rstcb prty status vp-class name如果有大量的线索在等待队列中,则说明需要增加CPU VP。
影响内存使用效率的Online配置参数∙ SHMVIRTSIZE∙ SHMADD∙ BUFFERS∙ RESIDENT∙ STACKSIZE∙ LOCKS∙ LOGBUFF∙ PHYSBUFF SHMVIRSIZESHMVIRTSIZE参数规定了初始分配给Online的共享内存的虚拟区的大小。
共享存储器的虚拟区存储与会话、请求有关的数据及其它信息。
虽然Online按处理大型查询或高峰负荷的需要增加共享内存给虚拟区,但共享内存的分配增加事务处理的时间,Informix建议设置SHMVIRTSIZE以提供一个满足一般日常操作需要的虚拟接口。
SHMADDSHMADD参数规定Online自动加到虚拟区的共享内存增量的大小。
在决定该值的大小时有些折中因素。
增加共享内存要占用CPU周期:每次的增加量越大,增加次数就越少,留给其它的进程的内存也越少。
通常采用大增加量,但当内存负荷很重时,少量增加使其他程序更好的共享内存资源。
Informix 有如下建议:内存大小 SHMADD <=256MB8192KB(default)256--512MB16,384KB >=51232,768KBBUFFERSBUFFERS是可以用于Online的数据缓冲区数。
这些缓冲区驻留在驻留区,用来缓存主存中的数据库的数据页。
可用的缓冲区越多,所需的数据页就越可能用于前一次请求而已经在内存里。
这个参数对数据库I/O和事务处理吞吐量有明显的影响。
但是,分配过多的缓冲区会影响内存系统并导致过多的页面活动。
Informix建议设置BUFFERS为物理内存(以MB为单位)的20%到25%。
实际BUFFERS 的单位为页,不同操作系统的页大小是不同的,因此需要计算。
使用onstat -p监控读缓存的频率。
这个频率代表一个查询请求的数据库页已经在共享内存里的百分比。
(还没有存在的页必须从磁盘拷贝到内存中)。
如果此值很低,可增加BUFFERS并重新启动Online。
在增加BUFFERS值时,到达某一点后,增加BUFFERS也不再明显改善读缓存的频率,或者达到操作系统共享内存分配的上限。
如果读高速缓存的比率很高,则应下调BUFFERS并重启动Online。
RESIDENTRESIDENT 参数规定是否强制共享内存驻留作为Online共享内存驻留区。
这个参数只对支持强制驻留的机器有效。
Online中的驻留区,包含用于数据库读写作业的LRU队列。
LOCKS参数LOCKS设置任意时刻可用的锁的最大数量。
Online中每个锁需要占用驻留区段的44个字节,分配共享内存时要考虑锁所用的资源。
一般锁可以分配的大些,对应用比较忙的系统可以到800万以上。
LOGBUFF参数LOGBUFF指定为三个用来保存逻辑日志记录的缓冲区分别保留的共享内存的数量。
这些缓冲区保存着逻辑日志记录,直到它们被刷新到硬盘上的逻辑日志文件。
缓冲区的大小决定了它被添满的频率,从而决定了它必须被刷新到硬盘上的逻辑文件中的频率。