科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道教你轻松了解Informix数据库调优方法 (3)

教你轻松了解Informix数据库调优方法 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SHMVIRTSIZE定义了分配给Informix IDS共享内存的虚拟存储区的大小。Informix IDS在处理大型查询或高峰负荷的需要增加共享内存给虚拟存储区,

作者:limeinan 来源:赛迪网 2007年9月20日

关键字: 数据库 Informix Dassault System tablename

  • 评论
  • 分享微博
  • 分享邮件
 

SHMVIRTSIZE定义了分配给Informix IDS共享内存的虚拟存储区的大小。Informix IDS在处理大型查询或高峰负荷的需要增加共享内存给虚拟存储区,但是共享内存的分配需要增加事务处理的时间,故在设置SHMVIRTSIZE值时,一般考虑能满足一个日常操作的需要。

STACKSIZE指示了数据库服务器为每个活动线程指派的初始堆栈的大小。如果将该参数配置得过小,那么线程将无法拥有执行其程序的足够内存空间,而且它将干扰其他线程。

SHMADD定义了Informix IDS自动加到虚拟存储区的共享内存增量的大小。在增加共享内存时,要占用CPU周期;每次的增加量越大,增加次数就越少,留给其它的进程的内存也越少。所以一般采用大的增加量。但是在内存负荷很重时,少量增加使其他程序更好的共享内存资源。所以,如果实际内存小于等于256MB,则建议SHMADD使用缺省值8192KB;如果在256MB到512MB之间,则设置为16384KB;如果大于512MB,则设置为32768KB。

可以用命令 onstat -g seg来显示 IDS 当前共享内存虚拟区中的段的数目。

Informix IDS在初始化时,如果定义的虚拟内存区尺寸太小,会自动向虚拟区附加其他操作系统段,虚拟内存中的段过多从而引起数据库的整体性能下降。所以在初始化时,将虚拟内存区的尺寸配置得足够大,以避免进行动态的分配共享内存段。在该列的输出中,class列为R是驻留内存段,V是虚拟内存段,M是消息内存段。如果显示的虚拟内存段多于三个,那么就需要提高配置文件中 SHMVERSIZE 参数的值。

命令 onstat -p是监控内存的另一个命令。其输出结果中的两个%cache显示了读写高速缓存比例的百分比,一般在80%到90%之间,如果低于80%,要调节BUFFERS参数值。ovlock 字段表明 IDS 在使用了最大数量的锁之后尝试过再使用锁的次数,如果该数字非零,可能需要提高配置文件中 LOCKS 参数的值。ovbuf 字段表明 IDS 在使用了最大数量的缓冲区之后尝试过再使用缓冲区的次数。如果该数字很大,比如说超过 100000,就需要提高 BUFFERS 参数,以便用户在需要从磁盘访问数据时不必等待缓冲区。在监控内存的使用情况时还可以采用Unix系统命令vmstat。

存储器及I/O的参数调整和监控

Informix IDS支持两种基本的数据存储设备裸设备和文件系统,建议使用裸设备存储数据文件。与文件系统相比,裸设备在存取数据时要快得多,而且对用户来说是看不到裸设备文件的,要安全一些。使用文件系统作为数据存储设备还有一个潜在的危险,当文件系统由于某些操作系统的错误而崩溃,且有一个数据库事务正在进行时,数据库服务器将认为数据库事务已经成功完成,但实际上,该事务正陷入操作系统缓冲区中,这最终将导致数据库中的某些不一致。

Informix IDS在dbspace中存取数据,dbspace又包含一个或多个chunk(块)。在9.40以后的版本中chunk的大小可以超过2G,在以前的版本中不能超过2G。可以使用onsta-d监控dbspace和chunk的使用情况和状态。

与I/O参数调整直接相关的是检查点。检查点是使磁盘上的页与共享内存缓冲池中的页同步的过程。检查点时间包含检查点间隔时间和检查点持续时间。在检查点期间,IDS 阻止用户线程进入临界会话,并阻止所有的事务活动。因此,检查点持续时间过长,用户会经历系统挂起。

CKPTINTVL参数指定检查点之间的时间间隔。当检查点间隔到了,则系统执行检查点操作。

PHYSFILE指定物理日志的大小。一旦物理日志(PHYSFILE)的75%已满,检查点也会发生。

LRUS参数指示共享内存缓冲池中设置的最近最少使用(LRU)队列数目。

可以用LRUS和LRU_MAX_DIRTY及LRU_MIN_DIRTY来控制在满的检查点之间页被刷新到磁盘的频度。在某些情况下,通过设置这些参数,使得在检查点发生时需要刷新修改的页数量很少,可以达到高的吞吐量;假如检查点持续时间始终超过 10秒甚至以上,那么可能需要减少 LRU_MIN_DIRTY 和 LRU_MAX_DIRTY 配置参数的值以获取更短的检查点持续时间。可以使用onstat -R和onstat -P、onstat -F命令的输出来确定参数值的大小。一般情况下LRU_MIN_DIRTY设置为50,LRU_MAX_DIRTY设置为70。

调整Informix IDS参数来优化数据库性能,是Informix IDS性能优化的一个方面,它的性能调优还要从网络、硬件、操作系统、应用程序等多个方面来综合考虑,其性能的优化是一个高度复杂,异常繁琐而且涉及面很广的综合性工作,而且它们之间相互关联,相互影响。在调整过程中,应该明确数据库的运行状况和系统资源的使用情况,确定问题的瓶颈出现在哪里。然后根据问题的所在来优化数据库的性能。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章