分类: DB2/Informix
2005-07-11 11:01:55
informix TRAIN文档(一)
磁盘数据组织结构
在INFORMIX -OnLine的磁盘数据组织结构中的最上层为逻辑概念上的数据库空间dbspace, 每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,
镜像数据存储块mirror保证 当根数据存储块故障时,OnLine 能够继续工作。每一个数据存储块都有若干个数据页 page 组成,为了提高输入和输出效率,若干个连续的数据页组成数据连续页extent。用户的数据库 database 和 数据表 table 存储在缺省的或者指定的数据库空间中,数据表的逻辑概念上的存储空间数据表空间 tblspace 有 一个或若个安数据连续页 extent 组成,数据记录 row 存放在数据页 page 中。
为更好的的支持多媒体应用,多媒体数据可以存放在二进制大对象数据页Blobpage中,若干个 二进制大对象数据页在此二进制大对象空间Blobspace。
OnLine 使用逻辑日志 Logical log、物理日志 Physical log来管理数据库日志操作。
1. 数据存储块 chunk
INFORMIX-OnLine的数据存放在物理上连续的数据存储块 chunk中,数据存储块是 OnLine 数据存储的最大的物理单位。数据存储块可以有两种构造方法,其一是直接构造在系统的物理磁盘上, 其二是构造在操作系统的文件或者卷上。
在第一种情况下,在操作系统上仅仅定义了这个 (块) 磁盘但没有格式化这个 (块)磁盘,因
此在这上面的所有数据操作都有 OnLine 来完成,操作系统对它不存在任何管理,数据空间在物理 磁盘上连续,这种数据的存储空间称为原始空间raw space。
而在第二种情况下,操作系统不仅定义了这个数据存储空间(文件), 还管理这个数据存储 空间(文件),数据文件操作时的内存缓冲、输入与输出。数据空间的建立受操作系统的制约,在物理存储上不连续。我们称这种数据存储空间为非原始空间 cooked space。
比较这两种数据的存储空间,原始空间在磁盘上连续,没有操作系统的缓存和制约,非原始空间在磁盘上不连续,存在着操作系统的缓存和操作系统的输入/输出的制约,因此在实际应用中, 采用 原始空间效率高于非原始空间,由于原始空间与系统设备有关, 同时不同操作系统对设备的
定义的不一致性,定义非原始空间比定义原始空间来得简单。 我们将原始空间所对应的磁盘称原 始设 备 raw device,而将非原始空间所对应的操作系统文件称操作系统文件cooked file。
为了进一步提高数据库运行的效率,我们通常选用字符设备作为存放实际的原始设备,这样在我们输入/输出数据时,可以充分发挥系统的DMA能力。
当我们使用原始设备时,可以在同一个原始设备上建立多个数据存储块。通过对数据存储块的参数 OFFSET和 SIZE的定义,其单位为KB,我们可以定义多个数据存储块在同一个磁盘或磁盘块 上,参数OFFSET 定义数据存储块的起始位置,参数SIZE定义数据存储块的大小,用户在设置参数 OFFSET 和SIZE时 必须保证在物理磁盘上没有相互覆盖。
在下图所示的原始设备/dev/rdsk/c0t1d1s0
上建立三个数据存储块 chunk1、 chunk2和 chunk 3,它们的大小分别为
如果采用操作系统文件作为数据存储空间时,一般不在一个文件中建立多个数据存储块。一个文件中建立多个数据存储块,操作系统对文件中数据的定位时间将更长。
不管是原始设备还是非原始设备,OnLine的概念是一致的。在实际应用中,可以一部分数据存储块用原始设备而另一部分用非原始设备,只是原始设备采用OnLine的管理的I/O机制,而非原始设备采用操作系统 unix 的I/O机制。
2. 数据页 page
INFORMIX -OnLine在数据存储块中以数据页page为单位来组织存放数据,并以数据页为单位来输入输出数据,它的大小与数据在共享内存中数据缓冲区相一致,所以 OnLine 的数据页的大小 是不可以改变的。数据页是OnLine 组织存放数据的最小的物理单位。
根据不同从操作系统,OnLine的数据页的大小是不同的。例如在SCO、AT&T、UNISYS 和HP等操作系统平台上,每一个数据页的大小为2KB,而在IBM和SEQUENT等操作系统平台上, 每一个数据页的大小则为4KB。同时数据在共享内存中的缓冲区的大小也是根据操作系统的不同 而不同,其值与数据页的大小一致。
3. 数据连续页 extent
为提高数据操作的效率,OnLine将若干个在物理磁盘上连续的数据页组成一个数据连续页 extent。当用户创建一个数据表时,OnLine以数据连续页为单位在数据存储块中分配一块连续的空间,当用户的数据写满了这个数据连续页后,OnLine 将以数据连续页为单位在数据存储块中申请一块连续空间,以存放更多的用户数据。在缺省情况下,初始化时第一个数据连续页为8个数据页。
数据连续页不能跨越数据存储块,当OnLine 需要申请较多的数据页构成数据连续页时,如
果 OnLine 找不到如数的在物理设备上连续的数据页时,OnLine将放弃这些不够构成一个数据连续页的数
据页,OnLine 将去下一个数据存储块去申请如数的在物理设备上连续的数据页。因此在实 际系 统中,过小的数据存储块将不利于数据操作性能和数据存取效率。
4. 数据库空间 dbspace
在INFORMIX-OnLine 的磁盘数据组织中,数据库空间 dbspace 处于一个比较上层的位置。 数据库空间是数据库在逻辑概念上的存储空间,一个或若干个数据库空间组成OnLine数据实体。在 物理 磁盘上,每一个数据库空间总对应于一个或几个数据存储块, 在这些与数据库空间对应的数 据存储块
中,一定有一个数据存储块是根数据存储块,而其它的则是后继数据存储块。 从功能上来 看,根数据 存储块除了具有后继数据存储块能够存储用户数据外,它还具有管理本数据库空间的功能;从数据存
储块的保留页来看,根数据存储块具有 56 个保留页,而后继数据存储块仅有3个保留
页。当然不同版本的OnLine在主、后继数据存储块的保留页的数量可能不同,但是根数据存储块需 要更多的保留页来
保存本数据库空间的定义。
在OnLine 初始化后有一个称为根数据库空间rootdbs的数据库空间,它是OnLine系统的第一个数据库空间。当建立根数据库空间时,它的根数据存储块将被建立,所有数据库的日志和所有的定义信息都必须存放在该数据存储块中,它比所有其它根数据存储块的保留页更多。由于数据库日志定义的需要,因此对根数据库空间的根数据存储块的定义尤其重要,关于如何正确地定义根数据库
空间的 根数据存储块将在后面详细介绍。
为了提高数据库系统运行的效率,INFORMIX新的动态服务器OnLine Dynamic Server 7.1中引入了临时数据库空间的概念。在没有临时数据库空间的系统中,临时数据将建立的缺省的根数据库空间中,由于临时数据操作需要频繁的增加、删除,会给根数据库空间的数据存储块中造成很多碎片,将导致数据库操作效率的降低;另外当数据库备份时,那些临时数据也一起作备份,从而增加了数据备份量,降低了数据备份的效率。引入临时数据库空间后,用户的临时数据或者数据操作
的中间 结果 将被存放在临时数据库空间中,同时当数据备份时临时数据库空间将不再被 备份。
5. 数据存储块镜像 mirror
为提高 OnLine 运行时的数据高可靠性,OnLine在数据存储上引入了数据存储块镜像的机制。OnLine数据存储的镜像是对数据存储块而言的,但是其定义是对数据库空间的。当一个数据库空间被定义为镜像时,它下面的所有数据存储块全部镜像;当一个数据库空间被定义成没有镜像的
时候, 它下面的所有数据存储块全部没有镜像。
当 OnLine在运行时,一旦数据存储块所在的物理磁盘发生读写故障,对于没有数据库空间没有镜像的系统,OnLine将自动关闭,并等待恢复。而对于具有镜像的数据库空间,OnLine将把存
在读写故障的数据存储块标识为Down,同时 OnLine 将继续运行,用户完全可以根据需要,在适当
的时候,恢复存在读写故障的数据存储块所在的磁盘,然后重构继续。因此一个具有镜像的数据库空间,其运行时的可靠性将大大高于不具有镜像的数据库空间。
6. 数据表空间 tblspace
在逻辑上,数据库存放在数据库空间dbspace中,数据表存放在数据表空间tblspace中。数据 库空间是由数据存储块组成,数据表存在于这些数据存储块中,数据表空间是由连续存放该数据表 记录的数据连续页组成。
informix TRAIN文档(二)
第二节 共享内存数据组织结构
OnLine 能高效地执行联机事务处理的第二个机制是数据库服务器系统的共享内存。在一些不使用共享内存的数据管理系统中,管理进程只能在需要数据的时候,将该记录和索引的最新值读
入该进 程所占有的私用数据缓存中进行操作,由于频繁的磁盘I/O,使系统的运行效率降低,同时 由于那些管理进程都各占一份数据缓存,使得系统内存的有效使用率降低。因此使用共享内存
会有 以下三方面的 好处:
(1)数据缓存不再属于某个进程,所有的数据库进程均共享这块内存,降低了磁盘的
I/O;
(2)所有数据库进程访问相同的访问,它们的值和索引在内存中只有一份拷贝,提高了内 存的有效使用率;
(3)操作的相关记录被预读进共享内存中,由于内存的I/O效率极高,因而系统并发除了数
据的能力得到提高。
随着OnLine功能和性能的不断提高,OnLine的共享内存也有所不同。尤其是INFORMIX的动态服务器OnLine Dynamic Server (ODS)在其共享内存的结构上增加了两个功能模块。在OnLine5 中, 其共 享内存仅有一个区域,驻留区Resident portion;动态服务器ODS 7.1除了驻留区 Resident portion 外还增 加了虚拟区 Virtual portion 和通讯区 Communication portion。
操作系统参数对数据库服务器共享内存的影响
操作系统的共享内存参数对数据库服务器的共享内存的定义和建立会产生极大的影响。对 INFORMIX来说,数据库服务器的共享内存绝对不能超过操作系统共享内存定义的允许范围。一个 OnLine 动态服务器7.1的共享内存不能超过操作系统所定义的一个UNIX进程所允许访问共享内存的极大值,由于操作系统对共享内存的定义往往不能满足OnLine动态服务器7.1的需要,因此,数据库 管理员通常需要在建立其数据库应用系统以前,首先调谐操作系 统的共享内 存参数。
对于OnLine动态服务器7.1来说,操作系统的参数对它们的影响,在共享内存锁资源管理方 面 和虚拟处理器对共享内存访问操作方面是不全部相同的。它们对操作系统参数的要求也是不一样
的,因此需要数据库管理员根据产品来决定操作系统的参数,在决定这些操作系统的参数前,请先 阅读产品说明文件。例如OnLine动态服务器7.1的$INFORMIXDIR/release/ONLINE_7.1,在这个文件中它向数据库管理员阐述该INFORMIX产品在该机器平台上对操作系统参数的要求。同一种产品在不同的平台上,对该平台操作系统参数的要求非常有可能是不一样的;在同一平台上,同一产品的
不同版本对操 作系统参数也很有可能是不同的。
第三节 处理器资源组织结构
OnLine 动态服务器7.1采用多进程
Multi-processes 多线索 Multi-treads
的数据库服务器机制 ,将每一个服务器进程根据用户定义分解成若干个线索,每一个线索响应一个用户的设计访 问的 请求。 INFORMIX将每一个进程称作一个虚拟处理器Virtual process。
在以前的多处理器系统中,往往将用户的应用程序和系统的处理器CPU对应起来,每一个处理器都分别处理一个用户的应用程序; 当应用程序数量多于处理器数目时,应用程序为争夺处理器资源CPU,而引起应用程序在运行时间上的不平衡;同时当应用程序的数量少于处理器数目时,由 于一 些处理器资源得不到运用而空闲,导致处理器资源运用上的不平衡。一种比较好的方法是将处
理器与应用所需要的处理器分离开来,然后由数据库系统来平衡这种需求。 在 INFOR MIX 动态服 务器中,用户应用程序发出的数据操作请求被称作虚拟处理器的服务器进程所接收,
然后 OnLine均 匀地将这些服务器进程分配到系统实际的处理器CPU上。这样就较好地解决了上面
所提到的两种不 平 衡状态。
在ODS 7.1中每一个数据库服务器进程都称作一个虚拟处理器 Virtual process,简称 VP。若干个相同功能的虚拟处理器组成一个虚拟处理器类Virtual process Class,简称VP Class, 每一个 VP Class 都表示一种功能的虚拟处理器。OnLine 一共有七种虚拟处理器,它们是:
处理器虚拟处理器 CPU VP,响应所有用户和OnLine系统对CPU资源的操作和协调。
磁盘输入输出虚拟处理器 Disk I/O VP,响应用户和 OnLine系统的磁盘输入输出请求,磁 盘输 入输出处理器分三种,异步输入输出
Asynchronous I/O、物理日志输入输出 Physical-log I/O 和逻辑日志
输入输出Logical-log I/O。
网络通讯虚拟处理器 Network VP,响应用户的网络联接的请求。 ODS 的网络虚拟处理器 有三种, 它们分别用于管理 tli、soc和ipc三种网络通讯接口。
系统管理虚拟处理器Adminstration VP,运行OnLine 系统管理程序和一些专职程序。
光盘虚拟处理器 Optical VP,当用户运行OnLine/Optical时管理光盘系统的运转。
审计虚拟处理器 Audit VP,当用户系统需要一定的运行时数据安全性的时候,审计虚拟处
理器在后台帮助检查每一个用户操作的合法性。
杂项管理虚拟处理器 Miscellaneous
VP,用于管理所有以上虚拟处理器不作的工作。