INFORMIX TRAIN文档.docx
《INFORMIX TRAIN文档.docx》由会员分享,可在线阅读,更多相关《INFORMIX TRAIN文档.docx(38页珍藏版)》请在冰豆网上搜索。
INFORMIXTRAIN文档
INFORMIXTRAIN文档
1磁盘数据组织结构
在INFORMIX-OnLine的磁盘数据组织结构中的最上层为逻辑概念上的数据库空间dbspace,每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,镜像数据存储块mirror保证当根数据存储块故障时,OnLine能够继续工作。
每一个数据存储块都有若干个数据页page组成,为了提高输入和输出效率,若干个连续的数据页组成数据连续页extent。
用户的数据库database和数据表table存储在缺省的或者指定的数据库空间中,数据表的逻辑概念上的存储空间数据表空间tblspace有一个或若个按数据连续页extent组成,数据记录row存放在数据页page中。
为更好的的支持多媒体应用,多媒体数据可以存放在二进制大对象数据页Blobpage中,若干个二进制大对象数据页在此二进制大对象空间Blobspace。
OnLine使用逻辑日志Logicallog、物理日志Physicallog来管理数据库日志操作。
1.1数据存储块chunk
INFORMIX-OnLine的数据存放在物理上连续的数据存储块chunk中,数据存储块是OnLine数据存储的最大的物理单位。
数据存储块可以有两种构造方法,其一是直接构造在系统的物理磁盘上,其二是构造在操作系统的文件或者卷上。
在第一种情况下,在操作系统上仅仅定义了这个(块)磁盘但没有格式化这个(块)磁盘,因此在这上面的所有数据操作都有OnLine来完成,操作系统对它不存在任何管理,数据空间在物理磁盘上连续,这种数据的存储空间称为原始空间rawspace。
而在第二种情况下,操作系统不仅定义了这个数据存储空间(文件),还管理这个数据存储空间(文件),数据文件操作时的内存缓冲、输入与输出。
数据空间的建立受操作系统的制约,在物理存储上不连续。
我们称这种数据存储空间为非原始空间cookedspace。
比较这两种数据的存储空间,原始空间在磁盘上连续,没有操作系统的缓存和制约,非原始空间在磁盘上不连续,存在着操作系统的缓存和操作系统的输入/输出的制约,因此在实际应用中,采用原始空间效率高于非原始空间,由于原始空间与系统设备有关,同时不同操作系统对设备的定义的不一致性,定义非原始空间比定义原始空间来得简单。
我们将原始空间所对应的磁盘称原始设备rawdevice,而将非原始空间所对应的操作系统文件称操作系统文cookedfile。
为了进一步提高数据库运行的效率,我们通常选用字符设备作为存放实际的原始设备,这样在我们输入/输出数据时,可以充分发挥系统的DMA能力。
当我们使用原始设备时,可以在同一个原始设备上建立多个数据存储块。
通过对数据存储块的参数OFFSET和SIZE的定义,其单位为KB,我们可以定义多个数据存储块在同一个磁盘或磁盘块上,参数OFFSET定义数据存储块的起始位置,参数SIZE定义数据存储块的大小,用户在设置参数OFFSET和SIZE时必须保证在物理磁盘上没有相互覆盖。
在下图所示的原始设备/dev/rdsk/c0t1d1s0上建立三个数据存储块chunk1、chunk2和chunk3,它们的大小分别为50MB、30MB和50MB,由于chunk的SIZE单位为KB,因此chunk1、chunk2和chunk3的SIZE分别为50000、30000和50000。
在通常情况下,第一个数据存储块chunk1的OFFSET为0,这样第二个数据存储块chunk2的OFFSET应为第一个数据存储块chunk1的SIZE,而第三个数据存储块chunk3的OFFSET则为第二个数据存储块chunk2的OFFSET加上第二个数据存储块chunk2的SIZE。
为保证在两个数据存储块的相邻边界处不发生重叠,可以将后一个数据存储块的起始位置稍微挪后一点。
如果采用操作系统文件作为数据存储空间时,一般不在一个文件中建立多个数据存储块。
一个文件中建立多个数据存储块,操作系统对文件中数据的定位时间将更长。
不管是原始设备还是非原始设备,OnLine的概念是一致的。
在实际应用中,可以一部分数据存储块用原始设备而另一部分用非原始设备,只是原始设备采用OnLine的管理的I/O机制,而非原始设备采用操作系统unix的I/O机制。
1.2数据页page
INFORMIX-OnLine在数据存储块中以数据页page为单位来组织存放数据,并以数据页为单位来输入输出数据,它的大小与数据在共享内存中数据缓冲区相一致,所以OnLine的数据页的大小是不可以改变的。
数据页是OnLine组织存放数据的最小的物理单位。
根据不同从操作系统,OnLine的数据页的大小是不同的。
例如在SCO、AT&T、UNISYS和HP等操作系统平台上,每一个数据页的大小为2KB,而在IBM和SEQUENT等操作系统平台上,每一个数据页的大小则为4KB。
同时数据在共享内存中的缓冲区的大小也是根据操作系统的不同而不同,其值与数据页的大小一致。
1.3数据连续页extent
为提高数据操作的效率,OnLine将若干个在物理磁盘上连续的数据页组成一个数据连续页extent。
当用户创建一个数据表时,OnLine以数据连续页为单位在数据存储块中分配一块连续的空间,当用户的数据写满了这个数据连续页后,OnLine将以数据连续页为单位在数据存储块中申请一块连续空间,以存放更多的用户数据。
在缺省情况下,初始化时第一个数据连续页为8个数据页。
数据连续页不能跨越数据存储块,当OnLine需要申请较多的数据页构成数据连续页时,如果OnLine找不到如数的在物理设备上连续的数据页时,OnLine将放弃这些不够构成一个数据连续页的数据页,OnLine将去下一个数据存储块去申请如数的在物理设备上连续的数据页。
因此在实际系统中,过小的数据存储块将不利于数据操作性能和数据存取效率。
1.4数据库空间dbspace
在INFORMIX-OnLine的磁盘数据组织中,数据库空间dbspace处于一个比较上层的位置。
数据库空间是数据库在逻辑概念上的存储空间,一个或若干个数据库空间组成OnLine数据实体。
在物理磁盘上,每一个数据库空间总对应于一个或几个数据存储块,在这些与数据库空间对应的数据存储块中,一定有一个数据存储块是根数据存储块,而其它的则是后继数据存储块。
从功能上来看,根数据存储块除了具有后继数据存储块能够存储用户数据外,它还具有管理本数据库空间的功能;从数据存储块的保留页来看,根数据存储块具有56个保留页,而后继数据存储块仅有3个保留页。
当然不同版本的OnLine在主、后继数据存储块的保留页的数量可能不同,但是根数据存储块需要更多的保留页来保存本数据库空间的定义。
在OnLine初始化后有一个称为根数据库空间rootdbs的数据库空间,它是OnLine系统的第一个数据库空间。
当建立根数据库空间时,它的根数据存储块将被建立,所有数据库的日志和所有的定义信息都必须存放在该数据存储块中,它比所有其它根数据存储块的保留页更多。
由于数据库日志定义的需要,因此对根数据库空间的根数据存储块的定义尤其重要,关于如何正确地定义根数据库空间的根数据存储块将在后面详细介绍。
为了提高数据库系统运行的效率,INFORMIX新的动态服务器OnLineDynamicServer7.1中引入了临时数据库空间的概念。
在没有临时数据库空间的系统中,临时数据将建立的缺省的根数据库空间中,由于临时数据操作需要频繁的增加、删除,会给根数据库空间的数据存储块中造成很多碎片,将导致数据库操作效率的降低;另外当数据库备份时,那些临时数据也一起作备份,从而增加了数据备份量,降低了数据备份的效率。
引入临时数据库空间后,用户的临时数据或者数据操作的中间结果将被存放在临时数据库空间中,同时当数据备份时临时数据库空间将不再被备份。
1.5数据存储块镜像mirror
为提高OnLine运行时的数据高可靠性,OnLine在数据存储上引入了数据存储块镜像的机制。
OnLine数据存储的镜像是对数据存储块而言的,但是其定义是对数据库空间的。
当一个数据库空间被定义为镜像时,它下面的所有数据存储块全部镜像;当一个数据库空间被定义成没有镜像的时候,它下面的所有数据存储块全部没有镜像。
当OnLine在运行时,一旦数据存储块所在的物理磁盘发生读写故障,对于没有数据库空间镜像的系统,OnLine将自动关闭,并等待恢复。
而对于具有镜像的数据库空间,OnLine将把存在读写故障的数据存储块标识为Down,同时OnLine将继续运行,用户完全可以根据需要,在适当的时候,恢复存在读写故障的数据存储块所在的磁盘,然后重构继续。
因此一个具有镜像的数据库空间,其运行时的可靠性将大大高于不具有镜像的数据库空间。
1.6数据表空间tblspace
在逻辑上,数据库存放在数据库空间dbspace中,数据表存放在数据表空间tblspace中。
数据库空间是由数据存储块组成,数据表存在于这些数据存储块中,数据表空间是由连续存放该数据表记录的数据连续页组成。
2共享内存数据组织结构
OnLine能高效地执行联机事务处理的第二个机制是数据库服务器系统的共享内存。
在一些不使用共享内存的数据管理系统中,管理进程只能在需要数据的时候,将该记录和索引的最新值读入该进程所占有的私用数据缓存中进行操作,由于频繁的磁盘I/O,使系统的运行效率降低,同时由于那些管理进程都各占一份数据缓存,使得系统内存的有效使用率降低。
因此使用共享内存会有以下三方面的好处:
(1)数据缓存不再属于某个进程,所有的数据库进程均共享这块内存,降低了磁盘的I/O;
(2)所有数据库进程访问相同的访问,它们的值和索引在内存中只有一份拷贝,提高了内存的有效使用率;
(3)操作的相关记录被预读进共享内存中,由于内存的I/O效率极高,因而系统并发除了数据的能力得到提高。
随着OnLine功能和性能的不断提高,OnLine的共享内存也有所不同。
尤其是INFORMIX的动态服务器OnLineDynamicServer在其共享内存的结构上增加了两个功能模块。
在OnLine5中,其共享内存仅有一个区域,驻留区Residentportion;动态服务器ODS7.1除了驻留区Residentportion外还增加了虚拟区Virtualportion和通讯区Communicationportion。
2.1操作系统参数对数据库服务器共享内存的影响
操作系统的共享内存参数对数据库服务器的共享内存的定义和建立会产生极大的影响。
对INFORMIX来说,数据库服务器的共享内存绝对不能超过操作系统共享内存定义的允许范围。
一个OnLine动态服务器7.1的共享内存不能超过操作系统所定义的一个UNIX进程所允许访问共享内存的极大值,由于操作系统对共享内存的定义往往不能满足OnLine动态服务器7.1的需要,因此,数据库管理员通常需要在建立其数据库应用系统以前,首先调谐操作系统的共享内存参数。
对于OnLine动态服务器7.1来说,操作系统的参数对它们的影响,在共享内存锁资源管理方面和虚拟处理器对共享内存访问操作方面是不全部相同的。
它们对操作系统参数的要求也是不一样的,因此需要数据库管理员根据产品来决定操作系统的参数,在决定这些操作系统的参数前,请先阅读产品说明文件。
例如OnLine动态服务器7.1的$INFORMIXDIR/release/ONLINE_7.1,在这个文件中它向数据库管理员阐述该INFORMIX产品在该机器平台上对操作系统参数的要求。
同一种产品在不同的平台上,对该平台操作系统参数的要求非常有可能是不一样的;在同一平台上,同一产品的不同版本对操作系统参数也很有可能是不同的。
3处理器资源组织结构
OnLine动态服务器7.1采用多进程Multi-processes多线索Multi-treads的数据库服务器机制,将每一个服务器进程根据用户定义分解成若干个线索,每一个线索响应一个用户的设计访问的请求。
INFORMIX将每一个进程称作一个虚拟处理器Virtualprocess。
在以前的多处理器系统中,往往将用户的应用程序和系统的处理器CPU对应起来,每一个处理器都分别处理一个用户的应用程序;当应用程序数量多于处理器数目时,应用程序为争夺处理器资源CPU,而引起应用程序在运行时间上的不平衡;同时当应用程序的数量少于处理器数目时,由于一些处理器资源得不到运用而空闲,导致处理器资源运用上的不平衡。
一种比较好的方法是将处理器与应用所需要的处理器分离开来,然后由数据库系统来平衡这种需求。
在INFORMIX动态服务器中,用户应用程序发出的数据操作请求被称作虚拟处理器的服务器进程所接收,然后OnLine均匀地将这些服务器进程分配到系统实际的处理器CPU上。
这样就较好地解决了上面所提到的两种不平衡状态。
在ODS7.1中每一个数据库服务器进程都称作一个虚拟处理器Virtualprocess,简称VP。
若干个相同功能的虚拟处理器组成一个虚拟处理器类VirtualprocessClass,简称VPClass,每一个VPClass都表示一种功能的虚拟处理器。
OnLine一共有七种虚拟处理器,它们是:
(1)处理器虚拟处理器CPUVP,响应所有用户和OnLine系统对CPU资源的操作和协调。
(2)磁盘输入输出虚拟处理器DiskI/OVP,响应用户和OnLine系统的磁盘输入输出请求,磁盘输入输出处理器分三种,异步输入输出AsynchronousI/O、物理日志输入输出Physical-logI/O和逻辑日志输入输出Logical-logI/O。
(3)网络通讯虚拟处理器NetworkVP,响应用户的网络联接的请求。
ODS的网络虚拟处理器有三种,它们分别用于管理tli、soc和ipc三种网络通讯接口。
(4)系统管理虚拟处理器AdminstrationVP,运行OnLine系统管理程序和一些专职程序。
(5)光盘虚拟处理器OpticalVP,当用户运行OnLine/Optical时管理光盘系统的运转。
(6)审计虚拟处理器AuditVP,当用户系统需要一定的运行时数据安全性的时候,审计虚拟处理器在后台帮助检查每一个用户操作的合法性。
(7)杂项管理虚拟处理器MiscellaneousVP,用于管理所有以上虚拟处理器不作的工作。
4数据库服务器的初始化
4.1数据库服务器初始化时的考虑
用户在建立和初始化其数据的时候,最重要考虑的问题是:
数据存储实体选用哪种方案,rawdevice还是cookedfile,是否对数据库空间建立镜像,怎样建立?
对于OnLine动态服务器7.1的使用者还可以考虑数据库系统是否需要数据复制的安全系统以及如何建立数据复制等等问题。
Rawdevice和cookedfile对于OnLine来说其概念和管理是一致的,因此对较小的数据库系统其效果相差无几,但对大数据库系统,由于cookedfile采用unix的I/O机制,而rawdevice则采用On-Line自身的I/O机制,因此在效率上rawdevice会明显快于cookedfile,且rawdevice的数据安全性也高于cookedfile,假设用户不小心删除数据储存实体chunk的文件名后,以cookedfile方式定义的数据库将被删除,而以rawdevice方式定义的数据储存实体Chunk只是描述它的设备文件名被删除,作为真正的存储数据的数据库空间并没有受到影响,通过重新建立设备文件名的方法,该数据储存实体不难恢复,而cookedfile则无法恢复。
另外从效率上考虑,Rawdevice的使用在unix系统上还有块设备和字符设备之分,用unix命令ls-l列设备目录,我们可以看到,有些设备文件名的标识为b而另一些则为c,其中标识为c的设备为字符设备,作为OnLine数据储存实体来说,字符设备更有利于发挥主机服务器的DMA能力,所以我们总是定义字符设备为数据储存实体。
数据存储空间的镜像与数据库服务器的复制是OnLine的数据安全机制,我们将在数据安全的章节中给以详细的讲述。
4.2操作系统上的准备工作
在建立和初始化数据库服务器系统的时候,需要作的准备工作有以下几点:
(1)为数据库所使用原始设备计划磁盘空间,并使得在UNIX操作系统上取得该原始设备的描述。
(2)修改INFORMIX环境下的配置文件$INFORMIXDIR/etc/sqlhosts和计算机系统对网络节点、网络端口的定义文件/etc/hosts、/etc/hosts.equiv和/etc/services。
#vi$INFORMIXDIR/etc/sqlhosts
online7ontlitcpchangshasqlexec7
(虚拟服务器名)(网络协议类型)(主机名)(服务端口名)
#vi/etc/hosts
132.147.162.1changsha
(网络结点)(主机名)
#vi/etc/hosts.equiv
changsha
(主机名)
#vi/etc/services
sqlexec78888/tcp
(服务端口名)(端口号)
(3)调节操作系统的核心参数,以适应OnLine动态服务器7.1对unix在共享内存及信号量等方面的需要。
用系统提供的参数管理的工具(例如SCOUNIX的sysadmsh)来进行调整。
需要调整的参数也因数据库产品的版本不同而有所不同,具体可以在成功地安装了数据库服务器后,查看$INFORMIX-DIR/release/ONLINE_7.1中对操作系统参数要求的说明。
例如对于在SCOUNIX3.2.4.2平台上使用OnLine7的用户,需要调整的核心参数有SHMMAX、SHMSEG、SHMMNI、SEMMNI和SEMMSL。
因此用户可注册到root,然后运行sysadmsh,在菜单中选择System,然后选择Configure,再选择Kernel,在Kernel选项中选择Parameter,然后调整第9项SharedData中的参数SHMMAX、SHMSEG和SHMMNI以及第8项Semphore中的参数SEMMNI和SEMMSL,设置完毕后在Kernel选项中选择Rebuild,重新构造unix引导核心。
然后退出sysadmsh,并重新启动unix。
同时需要注意的是,在重新构造核心后,数据库服务器存储原始设备名的属主和组定义的改变。
4.3建立数据在磁盘上组织实体
数据在磁盘上以数据存储块的形式存在,但在逻辑上则是以数据库空间的形式存在。
每一个数据库空间至少有一个数据存储块,其中最先定义的数据存储块为主数据存储块,而其它的数据存储块则为附加数据存储块。
同时在所有的数据库空间中必定有一个根数据库空间(rootdbs)。
建立数据在磁盘上的组织实体是建立与逻辑概念的数据库空间相对应的数据存储块。
数据存储块的组织方式有两种:
原始磁盘设备形式和UNIX文件形式。
相比起来,原始磁盘设备形式具有较高的运行效率和可靠性,但是原始磁盘设备形式的数据存储块的建立需要数据库管理员对数据库服务器所运行的系统的磁盘设备的描述具有足够的知识和经验。
原始磁盘设备形式的数据存储实体的建立方法是将一个特定的原始磁盘(或部分磁盘)用UNIX的链接命令ln链接到一个便于记忆和管理的设备文件。
例如在AT&TSVR4系统中,有一个磁盘/dev/rdsk/c0t1d1,而定义中的原始磁盘设备名为rootdbs1,因此数据库管理员以root用户注册,然后用以下的命令来构造数据存储实体:
#cd$INFORMIXDIR
#ln/dev/rdsk/c0t1d1rootdbs1
#chmod660rootdbs1
#chowninformixrootdbs1
#chgrpinformixrootdbs1
UNIX文件形式的数据存储实体的建立方法是产生一个0字节的UNIX文件,使用命令如下:
#cd$INFORMIXDIR
#cat/dev/null>rootdbs1
#chowninformixrootdbs1
#chgrpinformixrootdbs1
4.4建立数据库服务器共享内存
至此,我们可以开始初始化数据库服务器,以informix用户注册,用命令onmonitor命令。
在初始化前必须正确地定义了环境变量INFORMIXDIR、PATH和INFORMIXSERVER以及文件$INFORMIXDIR/etc/sqlhosts、/etc/hosts、/etc/hosts.equiv和/etc/services。
首先注册到informix,运行onmonitor,在菜单中选择Parameter,然后选择Initialize,便进入数据库空间初始化的屏幕。
然后设置在屏幕上显示的参数。
---------------------------------------------------------------------------
INTIALIZATION:
MakedesiredchangesandpressESCtorecordchanges.
PressInterrupttoabortchanges.PressF2orCTRL-Fforfield-levelhelp.
DISKPARAMETERS
PageSize[2]KbytesMirror[N]
TapeDev.[/dev/rct0]
BlockSize[16]KbytesTotalTapeSize[150000]Kbytes
LogTapeDev.[/dev/rct0]
BlockSize[16]KbytesTotalTapeSize[150000]Kbytes
BootName[rootdbs]RootSize[20000]Kbytes
PrimaryPath[/usr/informix/rootdbs1]
Offset[0]Kbytes
MirrorPath[]
Offset[0]Kbytes
Phy.LogSize[1000]KbytesLog.LogSize[500]Kbytes
NumberofLogicalLogs[6]
---------------------------------------------------------------------------
第一屏设置完成后按ESC,onmonitor在完成数据库空间初始化以后便接着要求用户设置共享内存。
如果用户在以后需要调整共享内存时可以运行onmonitor,然后选择Parameters菜单,再选择Shared-Memory项。
对于初次调整共享内存,用户需要注意的是ServerNumber是不可以重复的,并且ServerName以小写为好,尤其是对于用户需要建立分布式数据库系统的情况更为重要。
可以说对用户影响最大的BUFFERS和LOCKS。
---------------------------------------------------------------------------
SHAREDMEMORY:
M