2008年(239)
分类: DB2/Informix
2008-06-18 00:21:47
INFORMIX数据库系统采用多进程、多线程体系结构,进程被称为虚拟处理器(virtual processor,VP)。根据功能划分,INFORMIX系统可以启动以下几种类型的虚拟处理器:CPU、PIO、LIO、AIO、SHM、TLI、SOC、ADM、ADT、JVP等。
CPU虚拟处理器是INFORMIX系统最关键的进程,数据库系统中几乎所有的功能,例如:监听、服务、检查点等,都可以使用CPU虚拟处理器中的线程来实现。INFORMIX系统能够启动的CPU虚拟处理器的数目不能超过计算机中物理CPU的个数。
PIO、LIO、AIO虚拟处理器服务磁盘的I/O操作。如果使用操作系统文件创建数据库,那么PIO、LIO、AIO虚拟处理器中的线程分别负责物理日志、逻辑日志、用户数据的读写;如果使用裸设备创建数据库,那么由CPU虚拟处理器中的线程负责物理日志、逻辑日志、用户数据的读写。在UNIX平台的应用系统中,一般是使用裸设备来创建INFORMIX数据库系统,因此PIO、LIO、AIO虚拟处理器各自启动一个就足够了。
根据系统使用的通讯协议,SHM、TLI、SOC虚拟处理器被启动,负责系统的通讯管理。这些虚拟处理器的功能也可以在CPU虚拟处理器中完成,因此对INFORMIX系统来说,这些虚拟处理器并不是必须的。
ADM虚拟处理器负责数据库系统的管理工作,如:用户会话失败后,回收会话所拥有的资源等。在INFORMIX资料中,并没有该虚拟处理器的详细描述,也不需要用户进行配置。
ADT虚拟处理器负责数据库系统的审计处理。如果数据库系统的审计功能被使用,该虚拟处理器被自动启动。
JVP虚拟处理器负责数据库系统中JAVA应用环境的处理。如果数据库系统使用了JAVA函数和程序,该虚拟处理器被自动启动。
对虚拟处理器的管理,可以使用VPCLASS配置参数。通过该参数,可以设定系统要启动虚拟处理器的种类、个数以及相关特性等。
1. 监听线程
INFORMIX系统支持TCP/IP、IPX/SPX、IPC、PIPE通讯协议,系统所使用的通讯协议、端口存放在配置文件sqlhosts中。下列配置参数和监听线程有关:
NETTYPE:设定系统启动的监听线程的数目、最大用户连接数,以及使用的虚拟处理器的种类和数目。
2. 代理线程
在INFORMIX系统中,系统可以启动的代理线程数目由最大的用户连接数决定,没有系统配置参数可供用户调整。同时,如果在系统中设置了查询的并行处理功能,那么可启动的代理线程数目还会增加。
3. 异步预取线程
下列配置参数和异步预取线程有关:
RA_PAGES:设定每次预读的数据页数。
RA_THRESHOLD:设定内存中未处理数据页数的最小值。内存中未处理数据页数等于或者低于这个参数值时,就开始下一次的数据预读。
4. 页清除线程
在INFORMIX系统中,数据缓冲区被分成多个LRU队列进行管理,页清除线程分别将这些LRU队列的脏数据写入磁盘。下列配置参数和页清除线程有关:
LRUS:设定系统启动时创建的LRU队列数。配置参数BUFFERS的值除以这个值,就可以得出每个LRU队列管理的缓冲区数目。
CLEANERS:设定系统启动的页清除线程的个数。
LRU_MAX_DIRTY:设定LRU队列中脏数据页的最大百分比。在一个LRU队列中的脏数据,等于或者超过这个参数值后,页清除线程就开始将该LRU队列中的脏数据写入磁盘。
LRU_MIN_DIRTY:设定LRU队列中脏数据页的最小百分比。在一个LRU队列中的脏数据,等于或者小于这个参数值后,页清除线程就停止该LRU队列脏数据的磁盘写操作。
INFORMIX系统建议的LRUS参数值,是基于计算机系统可用的CPU数目。对单CPU的计算机系统,可以设置LRUS参数的初始值为4;对多CPU的计算机,可以设置LRUS参数的初始值为max(4,(number of CPU VP))。一般来说,根据数据库系统使用的硬盘数目,决定参数CLEANERS的值,一个硬盘需要一个页清除线程。但也应当考虑LRU 队列的长度以及检查点的频率。另外参数CLEANERS的值不应当低于LRUS的值。
5. 日志写线程
INFORMIX系统使用了两种日志文件:逻辑日志文件和物理日志文件。我们常说的数据库日志文件是指逻辑日志文件,只有逻辑日志文件保存了数据库的更新记录。在INFORMIX系统的正常事务处理过程中,数据页在被更新之前,要存入物理日志文件中。物理日志文件是用来存放数据页被改变之前的内容,这样如果事务需要回退,直接使用物理日志文件中的数据页覆盖原来的数据页就可以了。
对逻辑日志文件和物理日志文件的读写,INFORMIX系统使用了不同的线程,自动完成,没有系统配置参数可供用户调整。
INFORMIX系统的单个实例下可以创建多个数据库,每一个数据库有多种日志处理模式。如果数据库使用非缓冲日志模式或者ANSI兼容日志模式,则系统就对该数据库采用事务提交前必须将日志写入磁盘的机制;如果数据库使用缓冲日志模式,则系统就对该数据库采用事务提交前不要求将日志信息写入磁盘的机制。
6. 检查点线程
INFORMIX系统使用了两种形式的检查点操作:FULL和FUZZY。FULL检查点操作将内存中所有的改变写入磁盘,保证了数据物理上的一致性。
FUZZY检查点操作只是将内存中一些特定的改变写入磁盘,如:表的修改、索引的建立、用户定义类型以及大对象的增加、删除和修改等,在系统存在大量的更新操作时,这种检查点操作降低了系统I/O的压力。INFORMIX系统的检查点线程在正常情况下执行的都是FUZZY操作。
INFORMIX系统使用固定的时间间隔,执行检查点操作。下列配置参数和检查点线程有关:
CKPTINTVL:设定检查点操作的时间间隔。
7. 优化器线程
下列参数和优化器线程有关:
OPTCOMPIND:设定多个表的连接时,优化器如何生成查询的执行计划。
OPT_GOAL:设定优化器的优化方式。
除此之外,用户还可以设定IFX_DIRECTIVES环境变量。优化器根据此设置,决定是否使用嵌入在SQL语句的优化指示。
8. 死锁检测线程
在INFORMIX系统中,死锁检测由系统自动完成,没有系统配置参数可供用户调整。