informix数据库Word文件下载.docx
《informix数据库Word文件下载.docx》由会员分享,可在线阅读,更多相关《informix数据库Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
系统的磁盘组件由多个原始磁盘空间组成,称为chunk,chunk以页(page)为基本单位。
多个chunk集合逻辑上构成了数据空间(dbspace)。
数据空间用于存储数据库、表、系统信息以及物理日志和逻辑日志。
一个数据空间至少包括一个chunk.
共享内存段
动态服务器的共享内存由三个段构成:
∙驻留段主要用作缓冲池,缓冲池主要由数据页缓冲区和逻辑日志和物理日志的缓冲区以及其他系统数据结构。
驻留段的大小主要由系统参数BUFFERS决定。
∙虚拟段主要支持会话和线索。
根据用途的不同,内存池可以进一步分为:
会话池、多线索池、字典池、存储过程池、排序池、大缓冲池以及全局池。
∙如果客户与服务器利用共享内存进行通讯,消息段将用作通讯缓冲区。
每一用户连接(利用共享内存进行通讯)大致占用12K空间。
用户连接的数量在参数NETTYPE中定义。
用户可以利用ipcs或onstat-gseg命令来监控共享内存段的状态。
虚拟处理器(VirtualProcessors)
虚拟处理器类
oninit
cpu类:
运行所有用户线索和部分系统线索(所有线索的95%)
AIO类:
运行所有内部线索以执行I/O,日志写除外
PIO类:
运行内部线索写物理日志
LIO类:
运行内部线索写逻辑日志
SHM类:
运行共享内存通讯线索
TLI类:
运行内部TLI网络通讯线索
SOC类:
运行内部Sockets网络通讯线索
MSC类:
运行其它任务线索
ADM类:
运行时钟
OPT类:
负责管理BLOB将传至光盘子系统
ADT类:
运行安全审计线索
数据库系统服务器由若干称为oninit的UNIX进程组成,在系统中这些进程被称为虚拟处理器(VP)。
所有VP都是可执行程序oninit的实体。
每一VP属于一种特定的虚拟处理器类,而不同的虚拟处理器类分别完成不同的任务。
每一虚拟处理器可含的VP数量由下列参数决定:
“
CPUNUMCPUVPS
AIONUMAIOVPS
PIO自动启动一个VP。
如果物理日志被镜像,将启动两个VP
LIO自动启动一个VP。
如果逻辑日志被镜像,将启动两个VP
SHMNETTYPE
TLINETTYPE
SOCNETTYPE
MSC自动启动一个VP
ADM自动启动一个VP
OPTSTAGEBLOB被设置,然后自动启动一个VP
ADTADTMODE被设置,然后自动启动一个VP
用户可以利用PS或者onstat-gglo命令监控VP的状态
线索
onstat-gath显示所有线索
onstat-gact显示活动线索
onstat-grea显示所有就绪线索
在动态服务器中,线索是在oninit中的一段被执行的指令流。
通过多线索机制,可以让一个进程同时为多个任务服务而不必生成多个OS级进程。
进程oninit可以启动多个线索,各线索顺序执行,并在适当地时候把控制权转移给其它线索。
在多线索进程中每一线索都有自己的执行环境,包括自己的代码空间和自己的局部变量。
一个多线索进程负责多个线索间的正文切换。
在系统中,线索只能有两种存在状态:
要么正在某个VP上运行,要么在某一队列排队等待。
在就绪队列中保存了所有已就绪只待执行的线索的正文。
一旦出现空闲VP,该VP就从就绪队列中选取一个线索执行,而选取的标准由内部的优先机制决定。
在特定的时候,当前运行的线索会把对VP的控制权转移给其它线索。
有如下几种可以导致控制权的转移:
∙等待磁盘读写操作
∙等待应用程序的请求
∙等待获得锁或其它资源
∙将运行机会转给其它线索
一旦线索交出控制权,该线索的context就将被列入等待或睡眠队列中。
所有等待某种操作的线索进入等待队列,而所有需要稍后被唤醒的线索进入睡眠队列。
磁盘组件
在动态服务器中以页(page)作为基本存储和I/0单位。
页大小因机器和操作系统的不同而不同,一般为2k(HP-UX,SOLARIS),也可能为4k(NT,AIX),,用户无法改变页大小。
∙分配给系统使用的连续磁盘空间的单位称为chunk。
chunk由多个页构成。
它是一个典型的UNIX原始设备。
chunk的大小由系统管理员设定。
(onstat–d)
∙数据空间(dbspace)是多个chunk的逻辑集合。
每一数据空间至少包括一个chunk。
数据库和表创建在指定的数据空间上。
系统必须至少包括一个数据空间:
rootdbspace。
在该空间中存储着关于系统的信息,如sysmaster数据库。
(onstat–d,onstat–D)
∙物理日志(physicallog)由连续的磁盘空间构成,其存储着共享内存缓冲区中所有已修改的数据页(但尚未写入磁盘中)被修改前的映象。
因而物理日志主要用于快速恢复。
只有当数据页在首次被修改时,系统才会将其映象写入物理日志。
(onstat–l)
∙逻辑日志(logicallogs)也是由连续的磁盘空间构成,其存储着事务记录、DDL语句和checkpoint记录。
由管理员设定逻辑日志的数目。
系统循环使用逻辑日志。
在系统第一次初始化时,物理日志和逻辑日志都自动建立在rootdbspace上。
第二部分:
数据库的并发控制机制
INFORMIX使用锁技术解决在多用户访问数据库情况下,对同一对象访问的并发控制问题。
锁的定义:
锁是一个程序加在数据片断上的声明或限制
锁的分类:
一)按照锁种类分类:
INFORMIX有三种不同类型的锁。
它们在不同的情况下使用。
1.
SHARED锁
SHARED锁只保留对象的可读性。
当锁存在时,对象不能改变。
多个程序可对同个对象加SHARED锁。
2.
EXCLUSIVE锁
只能使单个程序使用。
在程序要改变对象时使用。
当其他锁存在时,EXCLUSIVE锁不能使用。
当使用了EXCLUSIVE
锁后,其他锁不能用于同一对象。
3.
PROMOTABLE锁
当数据库服务器通过一个更新游标取一条记录时,它在该记录上设置一个PROMOTABLE锁。
如果这个动作成功,数据库服务器知道其他程序不能改变此记录。
因为PROMOTABLE锁不是独占的,其他程序能够继续读这条记录。
由于在取此记录的程序执行UPDATE、DELETE语句或简单地取下一条记录之前,它可能花一些时间。
这样就提高了性能。
当它改变一个记录时,数据库服务器自动将此锁提升为更高级别的EXCLUSIVE锁。
二)锁的范围:
INFORMIX对于数据锁定提供了三种不同的方式,范围由大到小分别是数据库、表、记录级锁质库锁的类别eetworkAssociate(CCNA)dministrator_____________________________________________________________________________________。
使用的时机要看应用状况而定。
数据库级锁
你可以用CONNECT,
DATABASE,
或
CREATE
DATABASE语句打开数据库。
打开数据库的操作就在数据库上设置了SHARED锁。
只要程序打开一个数据库,SHARED锁就会阻止其他程序删除数据库或在数据库上设置EXCLUSIVE锁。
你可以用语
句DATABASE
database
name
EXCLUSIVE锁定整个数据库。
若此时其他用户正在使用该数据库,该操作将返回错误。
一旦设置了EXCLUSIVE锁,其他程序就不能打开数据库,因为打开时要放置一个SHARED锁。
只有数据库关闭时,数据库锁才释放。
你也可以用DISCONNECT或CLOSE
DATABASE显示地处理,也可以运行其他的DATABASE语句隐含的处理。
一般数据库级EXCLUSIVE锁是独占数据库资源,防止其他程序访问数据库。
它使得程序非常简单,不会产生并发效果。
常用在非高峰时期要改变大量数据时如数据库备份过程。
表级锁
INFORMIX提供两种模式表级锁:
EXCLUSIVE
MODE
和SHARE
MODE。
你可以锁整个表。
在某些情况下,这个操作是自动进行。
当INFORMIX处理下列语句时,一般锁整个的表:
ALTER
INDEX
、ALTER
TABLE
、CREATE
INDEX、DROP
、
RENAME
COLUMN、RENAME
。
该语句结束或事务结束会释放该锁。
在某些查询语句中,INFORMIX也自动锁整个表。
你可以用LOCK
TABLE语句显示地锁整个表。
该语句允许你对整个表设置EXCLUSIVE锁或SHARED锁。
当你程序从表中读取数据时,SHARED锁防止表中数据更新。
表级EXCLUSIVE锁防止对同个表的并发使用。
因此,如果其他许多程序要使用该表时,系统性能会受到严重影响。
类似数据库级EXCLUSIVE锁,表级EXCLUSIVE锁常用在非高峰时期要改变大量数据时。
例如,有些应用在高峰期间并不更新表,它们可以在非高峰期间定期以批处理方式更新。
通过UNLOCK
table
解除锁。
当存在事务时,事务结束时解除锁。
记录级、页级、键字级锁
表的一个记录是可设置锁的最小对象。
一个程序可以锁一个记录或记录的集合,同时其他程序可以操作同一个表的其它记录,INFORMIX以磁盘页面(disk
pages)为单位存储数据。
一个磁盘页面包含一个或多个记录。
在有
些情况下,页级锁比单个锁更好些。
锁的持续周期:
1.对于库级锁的持续周期。
数据库关闭时,数据库锁级也就释放。
2.表级、记录级、索引级锁的时期依赖于使用的SQL语句以及是否使用事务。
具体说明如下:
对于表锁:
如果数据库没有使用事务,当运行UNLOCK
TABLE语句时,表级锁就释放。
当使用了事务时,事务结束,表级、记录级、索引级锁都释放。
修改时锁的
处理:
EXCLUSIVE锁的时期依赖于是否使用事务。
如果没有使用事务,被修改的记录写到磁盘上就会释放该锁。
当使用了事务时,锁就会保持到事务的结束。
这个动作防止其他程序使用可能回滚到原来状态的记录。
当使用了事务时,只要删除记录键级锁就会设置。
使用键级锁解决下列错误:
程序A删除一个记录,程序B插入有同样键的记录。
程序