设计高性能的Informix数据库运用程序
INFORMIX数据库是一被广泛应用的关系型数据库,如何提高其应用性能是大家关心的话题,特别是随着数据库中数据量与应用处理交易量的不断增多,其运行效率问题尤显突出。
众所周知,数据库应用系统的性能优化是一个高度复杂,异常繁琐而且涉及面很广的综合性工作。面对复杂的数据库应用系统性能调优,大家往往感到无从下手。其实对性能调优不外乎从网络、硬件、操作系统、数据库参数和应用程序等方面来考虑。事实上,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40%左右,其余的60%系统性能提升全部来自对应用程序的优化。
本文结合工作实践,从INFORMIXONLINE参数的配置和性能调整、数据库表创建的方式、索引策略、查询语句(SELECT)优化等方面对INFORMIX数据库应用系统的程序设计和数据维护提出一些优化措施。
一、INFORMIXONLINE参数设置的优化措施
INFORMIX数据库系统参数性能调整的优劣直接影响INFORMIX数据库运行效率。在决定进行系统性能调优时,首先应制定一个完整的调优方案,先监控系统并分析出问题所在,然后根据分析结果每次调整一个参数,再进一步监控系统查看系统性能有无变化,然后再做近一步的调节。其中有一个重要的原则:每次最好只调节一个参数。
数据库系统性能通常与磁盘I/O、CPU、共享内存和网络四个方面有关。至于此四个方面在性能调优中孰轻孰重,还要根据整个系统的实际情况具体问题具体分析。
1、磁盘I/O
对磁盘调整的原则是降低读盘次数,极大化每次读盘数据量,数据分布均匀,防止瓶颈的发生。INFORMIXONLINE的磁盘空间应采用裸设备方式(raw device),而不应采用经过加工的文件空间(cooked filespace),前者比后者处理速度要快得多,且可靠性高。影响磁盘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负载,其中对性能影响较大的是CPUVP。我们可以把CPUVP看成是搭构在物理CPU之上的由INFORMIX动态服务器自己管理的虚CPU,因此物理CPU对用户而言是透明的。
CPUVP是一个多线索进程,除了没有任务做,例如就绪队列中没有等待执行的线索或操作系统强迫CPUVP让出CPU给其它进程,它将一直在CPU上执行。
为优化吞吐量,将NUMCPUVPS设置为能够处理承接任务的最小的数,这个数目小于或等于系统中可利用的CPU数,建议不要将CPUVP数设置成大于可用CPU数目。通常对于联机事务处理(OLTP)应用:NUMCPUVPS=实际CPU数量-1(对于单CPU系统,该参数应为1);对于联机分析处理(OLAP)应用:NUMCPUVPS=实际CPU数量。
如果CPUVP不能承受要执行的任务,这就表示需要提高CPU性能来解决问题。只有存在另外的处理器,才能通过增加CPUVP来解决问题。也可以从系统上移走其它任务,为虚处理器释放CPU周期,从而改善性能。
增加CPUVP的数目而不增加CPU资源只会使问题更严重,产生更多的CPU周期竞争,这样操作系统要有更多的工作来做均衡,争夺CPU时间的CPUVP使其负担增加。结果,上下文切换增加,这不仅消耗时间而且要使用更多的CPU。 #p#page_title#e#
文章来源:http://www.syjcy.cn