jillme
作者jillme课题专家组·2011-05-07 00:07
CIO·某大型银行

开发优质高效的INFORMIX数据库应用程序(一)

字数 5818阅读 1330评论 0赞 0
       INFORMIX数据库是一被广泛应用的关系型数据库,如何提高其应用性能是大家关心的话题,特别是随着数据库中数据量与应用处理交易量的不断增多,其运行效率问题尤显突出。众所周知,数据库应用系统的性能优化是一个高度复杂,异常繁琐而且涉及面很广的综合性工作。面对复杂的数据库应用系统性能调优,大家往往感到无从下手。其实对性能调优不外乎从网络、硬件、操作系统、数据库参数和应用程序等方面来考虑。事实上,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40%左右,其余的60%系统性能提升全部来自对应用程序的优化。 
      一、 INFORMIX ONLINE参数设置的优化措施 
INFORMIX数据库系统参数性能调整的优劣直接影响INFORMIX数据库运行效率。在决定进行系统性能调优时,首先应制定一个完整的调优方案,先监控系统并分析出问题所在,然后根据分析结果每次调整一个参数,再进一步监控系统查看系统性能有无变化,然后再做近一步的调节。其中有一个重要的原则:每次最好只调节一个参数。 
数据库系统性能通常与磁盘I/O、CPU、共享内存和网络四个方面有关。至于此四个方面在性能调优中孰轻孰重,还要根据整个系统的实际情况具体问题具体分析。 
1、磁盘I/O 
对磁盘调整的原则是降低读盘次数,极大化每次读盘数据量,数据分布均匀,防止瓶颈的发生。INFORMIX ONLINE的磁盘空间应采用裸设备方式(raw  device),而不应采用经过加工的文件空间(cooked  file space),前者比后者处理速度要快得多,且可靠性高。影响磁盘I/O的几个ONLINE配置参数: 
◆ CKPTINTVL:该参数指定检查点(CheckPoint)之间的时间间隔。 
◆ PHYSFILE:物理日志的大小建议为整个日志空间的25%。即:物理日志空间大小:逻辑日志空间大小=1:3 
◆ LRUS:该参数指示共享内存缓冲池中设置的最近最少使用队列数目。配置较多的LRU队列将允许有更多的页清除器操作,并减少每个LRU队列的大小。对于单CPU系统,INFORMIX建议设置LRUS参数为最小值4。对于多CPU系统,INFORMIX建议设置LRUS为最小值4和NUMCPUVPS的取值之中较大的一个。 
◆ CLEANERS:该参数指定执行的页清除线索的数目。参考下表: 

磁盘个数 INFORMIX推荐的CLEANERS值 
   <20 磁盘的个数 
20-100 磁盘的个数/2 
  >100 磁盘的个数/4(不超过128) 
2、CPU 
INFORMIX动态数据库服务器对CPU的处理采用先进的多进程多线索机制,即使用了VP(virtual  processer 虚处理器)去管理物理CPU资源,均衡CPU负载,其中对性能影响较大的是CPU VP。我们可以把CPU VP看成是搭构在物理CPU之上的由INFORMIX动态服务器自己管理的虚CPU,因此物理CPU对用户而言是透明的。 
CPU VP是一个多线索进程,除了没有任务做,例如就绪队列中没有等待执行的线索或操作系统强迫CPU VP让出CPU 给其它进程,它将一直在CPU上执行。 
为优化吞吐量,将NUMCPUVPS设置为能够处理承接任务的最小的数,这个数目小于或等于系统中可利用的CPU数,建议不要将CPU VP数设置成大于可用CPU数目。通常对于联机事务处理(OLTP)应用:NUMCPUVPS=实际CPU数量-1(对于单CPU系统,该参数应为1);对于联机分析处理(OLAP)应用:NUMCPUVPS=实际CPU数量。 
如果CPU VP不能承受要执行的任务,这就表示需要提高CPU性能来解决问题。只有存在另外的处理器,才能通过增加CPU VP来解决问题。也可以从系统上移走其它任务,为虚处理器释放CPU周期,从而改善性能。 
增加CPU VP的数目而不增加CPU资源只会使问题更严重,产生更多的CPU周期竞争,这样操作系统要有更多的工作来做均衡,争夺CPU时间的CPU VP使其负担增加。结果,上下文切换增加,这不仅消耗时间而且要使用更多的CPU。 
3、共享内存(Shared Memory) 
当调整系统性能时,对于内存的调节要考虑两方面的问题: 
◆ 是否有足够的物理内存? 
◆ INFORMIX  ONLINE的共享内存配置是否合理?是否充分使用了物理内存? 
INFORMIX ONLINE共享内存分为三部分:驻留部分、虚处理部分和消息部分,其中消息部分只有在客户机和服务器采用共享内存方式连接时才有。 
可以通过对INFORMIX 共享内存的虚处理部分来看系统是否有足够的物理内存。当前的操作系统和数据库系统都只有一小部分的数据和过程处理在内存中,这一小部分数据页被称之为进程工作组(working  set)。当一个进程工作组改变或其它进程运行时,每个进程工作组需要的内存也许会超出实际内存的容量。这时,一些数据页将被移出实际内存,其它的数据页将被移入。 
影响共享内存的几个ONLINE配置参数: 
◆SHMVIRSIZE:该参数规定了初始分配给ONLINE的共享内存的虚拟区的大小。共享存储器的虚拟区存储与会话、请求有关的数据及其它信息。虽然ONLINE按处理大型查询或高峰负荷的需要增加共享内存给虚拟区,但共享内存的分配增加事务处理的时间,INFORMIX建议设置SHMVIRTSIZE以提供一个满足一般日常操作需要的虚拟接口。一般50用户设8000KB,100用户设16000KB。 
◆SHMADD:该参数规定ONLINE自动加到虚拟区的共享内存增量的大小。在决定该值的大小时有些折中因素。增加共享内存要占用CPU周期:每次的增加量越大,增加次数就越少,留给其它的进程的内存也越少。通常采用大增加量,但当内存负荷很重时,少量增加使其他程序更好的共享内存资源。INFORMIX 有如下建议: 
实际内存大小     建议SHMADD值 
     <=256MB         8192KB(缺省) 
  256-512MB   16,384KB 
     >;=512MB       32,768KB 
◆BUFFERS:该参数可以用于ONLINE的数据缓冲区数。这些缓冲区驻留在驻留区,用来缓存主存中的数据库的数据页。可用的缓冲区越多,所需的数据页就越可能用于前一次请求而已经在内存里。这个参数对数据库I/O和事务处理吞吐量有明显的影响。但是,分配过多的缓冲区会影响内存系统并导致过多的页面活动。 
INFORMIX建议设置BUFFERS为物理内存(以MB为单位)的20%到25%。实际BUFFERS的单位为页,不同操作系统的页大小是不同的,因此需要计算。 
◆LOCKS:该参数设置任意时刻可用的锁的最大数量。ONLINE中每个锁需要占用驻留共享内存的44个字节,分配共享内存时要考虑锁所用的资源。一般锁可以分配的大些,其范围为:2000至8000000个。 
◆LOGBUFF:该参数指定为三个用来保存逻辑日志记录的缓冲区分别保留的共享内存的数量。这些缓冲区保存着逻辑日志记录,直到它们被刷新到硬盘上的逻辑日志文件。缓冲区的大小决定了它被添满的频率,从而决定了它必须被刷新到硬盘上的逻辑文件中的频率。INFORMIX建议设置为16KB或32KB,对于繁忙的应用,可考虑设置为64KB。 
◆PHYSBUFF:该参数指定为两个用来暂时保存将被修改的数据页的缓冲区分别保留的共享内存的数量。缓冲区的大小决定了它被添满的频率,从而也决定了它被写到硬盘上的物理日志的频率。最小值为1个页大小,INFORMIX建议16个页大小。 
对于OLTP和OLAP系统,INFORMIX ONLINE共享内存的配置和调节有很大不同。 
OLTP应用,驻留部分占共享内存的很大部分。基本上驻留部分的缓冲池占物理内存的20%至25%。例如,一个RS/6000机器的物理内存为1024MB,初始应将BUFFER的数目设为(1024MBX20%)/4KB=52428(AIX系统每页大小为4KB);然后继续增加BUFFER的数目直到读caching到95%,写caching达到85%,或系统开始增加数据移出(Page  out)。注意:高cache速率意味着磁盘I/O的减少。 
如果是OLAP系统,其典型特征是少量的用户读取大量的数据。这样的操作将会导致共享内存池的持续增长,例如排序池和哈希函数池,这些池存在于共享内存的虚处理部分: 在优化OLAP系统时,虚处理部分的大小应设为物理内存的75%,通过参数SHMVIRTSIZE设置。 
4、网络 
避免网络拥塞的方法之一是减少网络传输量,或将部分传输量移至别处。下列是减少网络传输量的一些措施。 
(1)、配置多张网卡 
通过设置有关的定义TCP/IP连接的系统文件,INFORMIX ONLINE可在多个网卡间通讯。下列介绍在UNIX系统下的ONLINE配置的步骤: 
◆  在/etc/services文件中为每一网卡加入一项: 
        info21    6621/tcp 
            info22    6622/tcp 
◆  使用不同的IP地址,为本机的每一网卡在/etc/hosts文件中加入一项: 
        66.77.9.79  rsibm21 
            66.77.9.80  rsibm22 
◆  在INFORMIX用户下$INFORMIXDIR/etc/sqlhosts文件中为每一网卡加一项: 
        server21  onsoctcp  rsibm21  info21 
            server22  onsoctcp  rsibm22  info22 
◆  在INFORMIX的onconfig文件中,设置参数: 
        DBSERVERNAME        server21 
            DBSERVERALIASES    server22 
配置完毕后,应用程序可通过指定sqlhosts项的名称或使用环境变量INFORMIXSERVER指定的缺省数据库服务器名称选择某一通往数据库服务器的路径。 
(2)、编程方面的考虑 
下面是一些能降低网络传输量的编程技术: 
◆ 对有成组SQL语句的任务,使用存储例程,因为它们能减少消息的数量和长度。维护数据库的相对完整性,而非将它编码于应用程序中,也能减少网络传输量。 
◆ 只返回应用程序需要的数据,筛选所有非必要的行和列。 
◆ 在发送与接收数据时,使用传送缓存。 
(3)、不同UNIX供应商对TCP/IP参数提供不同级别的控制,以下是可以对性能起作用的参数: 
◆ 流式缓冲区的数目。对于客户机/服务器的高负载,多一些缓冲区可以改善性能。 
◆ 数据包(Packet)的大小。DSS适用一较大值,一般OLTP用较小值更好。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广