Informix数据库的优化_第1页
Informix数据库的优化_第2页
Informix数据库的优化_第3页
Informix数据库的优化_第4页
Informix数据库的优化_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Informix数据库的优化分类:第三方技术作者:时间:2010年9月19日案例背景在InformixIDS的使用过程中需要保障数据的安全、准确、一致性,以及数据的读写效率,也就是优化数据库并提高数据库性能的目的。解决方式InformixIDS数据库的性能主要依赖于IDS存储器I/O的性能,以及IDS内存结构、后台处理器或虚拟处理器的参数。所以,对数据库进行调优主要是针对onconfig中相关设置参数来提高共享内存、虚拟处理器或后台处理器以及IDS存储器I/O的效能。1、内存结构的调优:InformixIDS使用的内存部分被数据库服务器线程以及其他用户和虚拟进程共享,所以这部分的内存叫做共享内存。IDS共享内存可以使数据库服务器减少总的内存使用。共享内存还能减少磁盘I/O,这是因为作为公共池来管理的缓冲区,是在数据库服务器级基础上而不是在每进程基础上被刷新的。而且,因为这些数据已经作为前面读取操作的结果存在于共享内存中了,所以虚拟进程通常可以避免从磁盘读取数据。磁盘I/O的减少也减少了执行时间。共享内存提供了最快地进行进程间通信的方法,因为它以内存转换的速度来处理读写消息。BUFFERS:BUFFERS是可以用于Online的数据缓冲区数。这些缓冲区驻留在驻留区,用来缓存主存中的数据库的数据页。可用的缓冲区越多,所需的数据页就越可能用于前一次请求而已经在内存里。该参数对数据库I/O和事务处理吞吐量有明显的影响。但是,分配过多的缓冲区会影响到操作系统的内存并导致过多的交换内存页面的活动,更多的buffers意味着更长时间的checkpoints。BUFFERS设置为物理内存(以MB为单位)的20%到25%。实际BUFFERS的单位为页,需要根据不同操作系统的页大小来进行换算计算。LOGBUFF:逻辑日志缓冲区是用来存储最后一次备份开始的逻辑日志记录的。逻辑日志缓冲区记录保存了SQL语句对数据库数据进行的修改,直到它们被刷新到硬盘上的逻辑日志文件。LOGBUFF定义了逻辑日志缓冲区的数量,缓冲区的大小决定了它被添满的频率,从而决定了它必须被刷新到硬盘上的逻辑文件中的频率。PHYSBUFF:参数PHYSBUFF指定为两个用来暂时保存将被修改的数据页的缓冲区分别保留的共享内存的数量。缓冲区的大小决定了它被添满的频率,从而也决定了它被写到硬盘上的物理日志的频率。LOCKS:每个用户对数据库的连接并执行数据库的操作,都需要一定数量的锁,来保证数据的被当前使用的独占性(排他性)。在InformixIDS9.2以后的版本中,当用户的锁不够时,可以动态的分配锁的数量。在以前的版本中,该数值是固定不变的。与锁对应的参数是LOCKSo一般情况下设置为2000到8000000个。每个LOCK占44bytes的内存,根据系统物理内存的情况酌情增减。RESIDENT:规定是否强制共享内存驻留作为Online共享内存驻留区。这个参数只对支持强制驻留的机器有效。Online中的驻留区,包含用于数据库读写作业的LRU队列。SHMVIRTSIZE:分配给InformixIDS共享内存的虚拟存储区的大小。InformixIDS在处理大型查询或高峰负荷的需要增加共享内存给虚拟存储区,但是共享内存的分配需要增加事务处理的时间,故在设置SHMVIRTSIZE值时,一般考虑能满足一个日常操作的需要。STACKSIZE:数据库服务器为每个活动线程指派的初始堆栈的大小。如果将该参数配置得过小,那么线程将无法拥有执行其程序的足够内存空间,而且它将干扰其他线程。SHMADD: 定义了InformixIDS自动加到虚拟存储区的共享内存增量的大小。在增加共享内存时,要占用CPU周期;每次的增加量越大,增加次数就越少,留给其它的进程的内存也越少。所以一般采用大的增加量。但是在内存负荷很重时,少量增加使其他程序更好的共享内存资源。注:可以用命令onstat-gseg来显示IDS当前共享内存虚拟区中的段的数目。2、虚拟处理器的调优:在数据存储器和内存结构之间,有许多虚拟或后台处理器忙于处理SQL语句。虚拟处理器对数据库服务器的作用类似于CPU对计算机的作用。正如一个CPU允许多个操作系统进程来服务多个用户一样,一台数据库服务器虚拟处理器也可以运行多个线程来为多个SQL客户机应用程序提供服务。NUMCPUVPS:定义了InformixIDS开始启动的CPUVP的数量。一般情况下不能超过系统CPU的个数,对于单或双CPU的计算机系统,建议设置NUMCPUVPS是1或者2,即使用一个或两个CPUVP;对于有4个以上CPU,建议设置NUMCPUVPS的值等于处理器总数减1。在InformixIDS9.2以后的版本中将NUMCPUVPS、NOAGE、AFF_NPROCS、AFF_SPROC、NUMAIOVP用VPCLASS参数代替。当InformixIDS处于online的状态下,可以使用onmode-p(+/-)#来增加或者减少虚拟处理器。#代表增加或者减少虚拟处理器的个数。SINGLE_CPU_VP:定义了多个CPUVP(1)还是单个CPUVP(0)。AFF_NPROCS:定义了可以绑定到CPUVP的CPU的数目。AFF_SPROC的取值是在0和(AFF_NPROCS-NUMCPUVPS+1)这两个值之间的,不能大于后者(通常为0)。AFF_SPROC:定义了把连续的几个CPU(AFF_NRPOCS参数定义的值)中第一个CPU的序号连接到Ocpuvp上(通常为0)。NUMAIOVPS:指定系统上AIO/KAIO虚拟处理器的数目。如果所在的操作系统不支持核心异步I/O(KAIO),IDS使用AIPVP来处理所有数据库I/O请求。分配AIOVP的目的是要分配足够的AIOVP以便I/O请求队列的长度保持很短,即队列中保持尽可能少的I/O请求。OPTCOMPIND:帮组优化程序为应用选择合适的访问方法。如果OPTCOMPIND等于0,优化程序给予现存索引优先权,即使在表扫描比较快时。如果OPTCOMPIND设置为1,给定查询的隔离级设置为RepeatableRead时,优化程序才使用索引。如果OPTCOMPIND等于2,优化程序选择基于开销选择查询方式。,即使表扫描可以临时锁定整个表(通常为0)。MULTIPROCESSOR:定义了多个CPUVP(1)还是单个CPUVP(0)。当设置MULTIPROCESSOR为1时,IDS以对应于多处理器的方式执行锁定。否则,设置该参数为)。NOAGE:在操作系统对进程进行调度时,如果某个进程在过去一段时间经常占用CPU,则操作系统会降低它的优先级。将该参数设为1可屏蔽掉这一机制,使得操作系统在调度CPUVPC中的线程时不考虑其以前对CPU的占用情况,从而使CPUVPC中的线程获得更多的运行机会。3、IDS存储器I/O的调优:与I/O参数调整直接相关的是检查点(CHECKPOINT)。检查点是使磁盘上的页与共享内存缓冲池中的页同步的过程。检查点时间包含检查点间隔时间和检查点持续时间。在检查点期间,IDS阻止用户线程进入临界会话,并阻止所有的事务活动。因此,检查点持续时间过长,用户会经历系统挂起。CKPTINTVL:指定检查点之间的时间间隔。检查点间的实际时间间隔可以从消息日志文件(online.log)获得。物理日志(PHYSFILE)的75%已满或达到检查点时间间隔,检查点也会发生。通过设置CKPTINTVL为长时间间隔,可以利用物理日志容量来触发基于实际数据库活动而不是任意时间单位的检查点操作。如果CKPTINTVL时间间隔太短就会频繁出现CHECKPOINT操作,同时也就会出现同样频繁次数的“临界会话”(Checkpoint的频率和持续时间会影响IDS的性能)。LRUS:指定共享内存缓冲池中设置的最近最少使用(LRU)队列数目。配置较多的LRU队列将允许有更多的页清除器操作,并减少每个LRU队列的大小。对于单CPU系统,建议设置LRUS参数为最小值4。对于多CPU系统,设置LRUS为最小值4和NUMCPUVPS的取值之中较大的一个或根据己的应用特点设置。CLEANERS:CLEANERS参数指定执行的页清除线程CLEANERS的数目。LRU_MAX_DIRTY和LRU_MIN_DIRTY:BUFFER中系统脏页面多了以后,可供用于替换的干净页面就少了,系统进行替换时的效率就可能下降。因此,当系统中的脏页面达到该设置比例时,系统就会启动PageCleaner线程,刷新一些页面,保证系统中有一定比例的干净页面。LRU_MAX_DIRTY和LRU_MIN_DIRTY都是百分比,代表系统中脏页面在所有缓冲区中所占的比例。当系统中的脏页面的比例上升直至超过了参数LRU_MAX_DIRTY的值的时候,系统就会唤醒PageCleaner线程,刷新脏页面;由于PageCleaner线程的刷新工作,系统中的脏页面的比例又会回落,当系统中的脏页面的比例回落到参数LRU_MIN_DIRTY的值以下时,PageCleaner线程又开始睡眠,直到下一次被唤醒或检查点操作。通过LRU_MAX_DIRTY和LRU_MIN_DIRTY,使得在检查点发生时需要刷新修改的页数量很少,可以达到高的吞吐量;获取更短的检查点(Checkpoint)持续时间。4、库表“锁”模式的调整锁是一个程序加在数据片断上的声明或限制。数据库服务器保证只要数据是被封锁的,其它任何数据库服务器进程都不能对其进行修改。当另一数据库服务器程序要求对该数据库进行修改时,数据库服务器使该程序要么等待,要么返回一个错误。在Informix中表在缺省模式下建立他的锁模式是页锁。1、 页锁:页锁是以操作系统所设定大小的页为锁定对象。在一个事务过程中修改六条记录中的任一一行,该行所在的页面被加锁。共用1个独占锁锁住该页就搞定(修改中会在该表中加共享表锁)。如果另一个用户再启动一个事务来访问这六条记录中的任何一条都不能成功的,因为该页已经被第一个锁住了该页。如果用户在一个事务中需要将六条记录全部修改;则系统还是用一个独占锁就可以完成。2、 行锁:行锁是以单一存储的行记录为锁定对象。在一个事务过程中修改六条记录中的任一一行,该行被加锁。共用1个独占锁锁住该行。如果另一个用户再启动一个事务来访问六条记录中的除该记录外的其他五条记录都会成功,因为系统只对修改的那一行进行了加锁。如果用户在一个事务中需要将六条记录全部修改;则系统需要用六个独占锁才能完成;每条记录一个锁。3、 “页锁”与“行锁”的比较从“页锁”与“行锁”的特性来看,页锁将减少锁数目的使用但并发性差;而行锁则对多个用户并发操作提供很好的支持。不过将加大锁的数目的使用。对于业务应用来说,同时会有上百或更多的用户进行操作。这种应用行锁将非常适用。同时为了保证锁数量的充足,就加大了ONCONFIG的LOCKS的配置。(在InformixIDS9.2以后的版本中,当用户的锁不够时,可以动态的分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论