影响Informix数据库性能的主要参数
- 格式:pdf
- 大小:217.27 KB
- 文档页数:7
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数据库中,默认的隔离级别是可重复读(REPEATABLE READ)。
可重复读是一种比较严格的隔离级别,它能够确保事务在执行期间不会受到其他并发事务的干扰。
具体来说,可重复读隔离级别的事务可以读取其他事务已提交的数据,但是不允许其他事务对其读取的数据进行修改,从而保证了读取的数据的一致性。
在可重复读隔离级别下,Informix数据库使用了多版本并发控制(MVCC)技术来实现事务的隔离。
MVCC技术通过为每个事务创建一个独立的版本来实现事务之间的隔离。
在事务开始时,数据库会为该事务创建一个版本,并在事务提交或回滚时将该版本删除。
这样,其他事务就不会读取到正在被修改的数据,从而避免了数据的不一致性问题。
除了可重复读隔离级别外,Informix数据库还支持其他几种隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交(READCOMMITTED)和串行化(SERIALIZABLE)。
这些隔离级别分别在事务的读取和修改操作上有不同的限制,可以根据具体的业务需求选择合适的隔离级别。
读未提交隔离级别是最低级别的隔离级别,它允许事务读取其他事务尚未提交的数据。
这种隔离级别虽然能够提高并发性能,但是可能会导致脏读(Dirty Read)问题,即读取到其他事务未提交的数据。
读已提交隔离级别是比较常用的隔离级别,它允许事务读取其他事务已提交的数据。
这种隔离级别可以避免脏读问题,但是可能会导致不可重复读(Non-repeatable Read)问题,即同一事务中多次读取同一数据时,可能会读到不同的值。
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 时,你可以指定一系列参数来控制其行为。
这些参数可以影响与数据库的连接方式、执行的操作类型以及输出格式等。
以下是一些可能用到的参数,以及它们的简要说明(注意:这里的参数可能会因 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数据库的安装(一)、安装顺序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数据库的高可用技术。
众所周知,用户的关键业务系统,特别是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中心的双机方案,提供数据灾备能力。
华为产品维护资料汇编 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数据库的查询优化技术1.合理使用索引索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。
现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。
索引的使用要恰到好处,其使用原则如下:●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。
比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。
如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
●如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
●使用系统工具。
如Informix数据库有一个tbcheck工具,可以在可疑的索引上进行检查。
在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性,必要时进行修复。
另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。
2.避免或简化排序应当简化或避免对大型表进行重复的排序。
当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。
以下是一些影响因素:●索引中不包括一个或几个待排序的列;●group by或order by子句中列的次序与索引的次序不一样;●排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。
如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。
3.消除对大型表行数据的顺序存取在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响。
比如采用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查询就要查询10亿行数据。
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数据库性能的主要参数...影响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数据库性能的主要参数影响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指定为三个用来保存逻辑日志记录的缓冲区分别保留的共享内存的数量。
这些缓冲区保存着逻辑日志记录,直到它们被刷新到硬盘上的逻辑日志文件。
缓冲区的大小决定了它被添满的频率,从而决定了它必须被刷新到硬盘上的逻辑文件中的频率。