文档库 最新最全的文档下载
当前位置:文档库 › INFORMIX ONLINE 介绍

INFORMIX ONLINE 介绍

INFORMIX ONLINE 介绍


https://www.wendangku.net/doc/828510962.html, 作者: springwind


一、简介
Informix服务器
1. 两种数据库服务器产品:
Informix—SE 容易操作,适用中小型数据库。
Informix—OnLine 高性能,高可用性,数据一致性,分布式数据库,支持多媒体。
2. 服务器的概念;控制数据存取的一种机制。
3. 两种服务器的性能对比:
SE OnLine
安装 简单,不需调查 安装后进行参数配置
锁 行、表库锁 行、责、表、库四级隔离
系统故障恢复 从备份向前 快速恢复
管理 OS级 DB-monitor命令行工具
4. 主要特点:
磁盘管理系统,共享内存、缓冲及通讯,容错机制,高可用性,支持多媒体,分布式数据库存取,使得它特别适合联机事务处理(OLTP)。
5. 双进程机构
Informix—OnLine使用一种双进程结构,应用程序和数据库访问分别由两个不同的程序控制,通常应用程序成为客户,而数据库访问程序成为服务器。通常这种结构称为客户/服务器结构。
这里OnLine为服务器,DB—ACCESS,Informix—4GL,Informix—SELZ等等是客户。客户与服务器间的联系通过UNIX相互通讯,客户与服务器可驻留在同一台机器上,也可在不同的机器上。
6. OnLine的系统结构

共 享 内 存
守护进程
服务器进程




守护进程是一组后台进程,控制并维护OnLine系统
磁盘部分,它由分配给OnLine系统的一个或多个单元组成,所有数据库的数据及OnLine系统的信息均放在磁盘部分。
共享内有部分,缓冲磁盘中的数据,以快速有取。
7. 共享内有的概念,优点:

数据库服务器 OnLine
代码(共享)
101 101
进程01 进程01
102 102 进程03
102 进程02
进程02 103
103
101
进程02
103



缓冲区不再分配给具体的进程,而是分配给所存数据库。
·这样内存中只有一份拷贝,数据的一致性得到了保正。
·提高并发性
·提高共享内存利用率,减少数据冗余。 锁,用户数
8. 共享内存的成份 系统

内部资源(见下表)
9. 主要磁盘成份Chunk, 缓冲池
OnLine系统并不利用UNIX
的文件系统来管理磁盘,而 逻辑日志缓冲 物 理日志缓冲
是使用自己的方法来管理磁 1 2 3 1 2
盘,它比UNIX文件系统更
适合数据库管理。因此,必须首先指定OnLine系统能够使用的磁盘空间。分配给OnLine系统的空间单位称为clunks。所谓clunks是一块由OnLine系统使用的连续空间,一个clunks有可能是一块原始设备,也有可能是一个UNIX熟文件。以后详细介绍。
Page 当clunks分配给OnLine后,clunk将更细分页。(Page)所谓页,既是OnLine系统的基本的I/O单位。所有的OnLine系统的数据均存于页中。Page的大小,由特定机器操作系统决定,管理员不能更改2K,(一般)4K(少数)。 dbspace
Dbspace dbspace是clunks的集合,
用来存储系统的表及数据库,一个
dbspace至少有一个clunks。
Informix—OnLine系统必须至少有
一个dbspace,称之为根dbspace,rost dbspace。
Tblspace tblspace是包含一个数据库表的数据的所有页的集合,所以一个tblspace=1个表。
Chunk Extent Page Row的关系
Chunk

page page


Page page
Extent
Row Row
Row Row


Dbspace and thspace(逻辑分组)
Extent


Extent

Dbspace是chunk的逻辑集合,不同的chunk可以位于不同的磁盘上,尽管它们都是dbspace的一个组成部分。
10. OnLine的特殊数据类型 Bolb
二进制大对象Blob是任意长度和数值的字节流,一个Bolb可能是数字化的图象和声音,或一个大的文本文件,理论极限2GB。
 两种类型的Bolb:TEXT与BYTE。
 TEXT用于存放可打印的文本文件。
 BYTE用于存放任意类型的二进制数据。
 Bolbspace是以chunk形式表示大物理空间的逻辑集合。每个Bolbspace至少有一个chunk,成为初始chunk。
创建Blobspace时,需要为该Blobspace指定一个blobpage的大小,其值为页的整数倍。创建时,可以说明该Blobspace的blobpage的大小,其值为blobpage的页的数目。存储在blobspace中的blob数据被存放在一个或多个blobpage中。因为blob数据一般较大,所以创建较大的blobpage会使存储数更有效。
11. 另一类特殊型OnLine数据为VARCHAR
Varchar是一种可变长的字符类型,范围从0~255字节,一个Varchar
字段占用的磁盘空间为其实际长度外加一个字及,而char占用的字段为其长度,对于可能变得

很长,但又比较小的数据,Varchar可能有助于节省磁盘空间。
 例:cust-num serial cust-name char(35) custom-addr Varchar(100)
1218 Joe Java 126 J
1219 KolinTen 1811WestBroad
way suitest
12. 镜像的概念
镜像是一种数据复制的过程。Mirroring是指写数据时自动复制该数据的过程。是否允许镜像是由初始化时设定的,是否允许对dbspace或blobspace镜像可在任何时候进行。
镜像的定义是对数据库空间dbspace而言的,当一个数据库空间被定义成镜像时,它下面的所有数据存储块(chunk)全部镜像。
在镜像的chunk中,主数据存储块primary chunk,另一种为镜像数据块mirrored chunk,二者大小一致。
13. 逻辑日志
逻辑日志是指磁盘上的连续页的集合,用来存储OnLine系统的事务日志,OnLine系统可以有3个或更多的逻辑日志(最少三个),用于记录对数据库的修改。
14. 物理日志
OnLine有一个特殊日志用于自动恢复的目的,称为物理日志。该日志也是磁盘上的一组连续页,存储着共享内存中被修改的页的前映像。
15. 数据缓冲
将数据从磁盘读入共享内存缓冲区,称为数据缓冲。当数据库服务器需要取数据时,它必须先找到数据所在的页。在找到页后,把该页从磁盘读进共享内存缓冲池缓冲区,当该页在缓冲池中后,任何其他用户可以读取或修改该页的内容,而不必从磁盘中读入,也就是说,共享内存缓冲池中的页为所有服务进程共享。
16.主要的OnLine事件检查点,checkpoint,将共享内存被修改的页刷新到磁盘,使得磁盘上共享内存的数据保持同步。
二、INFORMIN—OnLine配置
1. 安装INFORMIN—OnLine。(过程略)。
2. 配置UNIX的核心参数
INFORMIN—OnLine使用共享内存,UNIX核心必须按照OnLine的要求配置足够的内存资源。/usr/informix/release/ONLINE5.0(7.0)
SHMMAX—定义单个共享内存的大小
共享内存 SHMSEG—定义单个进程可访问的共享内存段的最大数量
SHMMNL—定义整个系统所有的共享内存的数量
SEMNL—可用信号量的最大数目
信息量 SEMMSL—个集内信号量的最大数目
SEMMNS—信号良是一个标志,或称为互锁机制 INFORMIN—OnLine通过使用信号量用来控制进程。
改变这些参数后,需要重新建立UNIX核心,并重新启动。
3. Chunks
将一个chunks配给OnLine系统时,可以通过三个参数来定义一个chunk:路径,文件名,偏移量和尺寸。
偏移量 熟文件为0,原始设备前10K一般不用。
创建熟文件 1. Cat /dev/null>file-name


2. chmod 660 file-name
3. chgrp informix file-name
4. chown informix file-name
创建生设备 1.创建一块没有安装的磁盘.
2.chmod 660 device-name
3. chgrp informix device-name
4. chown informix device-name
e.g. ln /dev/rdata /dev/rdbspace
chmod 660 /dev/rdbspace
chown informix /dev/rdbspace
chgrp informix /dev/rdbspace
原始设备是一种利用UNIX创建的字符设备,它有一个设备路径和设备驱动,它是独立于UNIX文件系统的.
$ INFORMIX DIR/ect/tbconfig
4.配置OnLine
使用工具tbmonitor工具,启动步骤
1. 以informix用户注册
2. tbmonitor paramenter initialize 磁盘参数屏
pagesize 页大小,反白显示,不可更改
Mirror 是否允许镜像,决定系统是否支持镜像,这时并没有启动镜像功能,只是在初始化系统时允许镜像(分配一些额外数据结构),其值由通过修改配置文件中的mirror参数来改变。
消息日志文件:Sys.Log.File:记录了系统工作状态大改变,遇到I/O错误及其他系统有关事件,该文件名informix要有写的权限。
System Message:同Sys.Log.File相同的消息,但一般直接发往控制台,随时可变。
Tape Dev:系统备份设备
 Block Size:磁带块的大小
 Total Tape Size:磁带的容量
 Log Tape Dev:逻辑日志备份时所用的磁带设备
如果只有一个磁带设备,二者可为一。
Tape Block Size应使用磁带驱动器所有支持的最大值,减少I/O
次数,提高效率。
Root name dbspace的初始chunk
每个OnLine系统最少得有一个dbspace,上面存储包括数据库数据在内的所有系统信息,称为rootdbs。当系统被初始化时,这个被称为rootdbspace的dbspac被创建,并且分配第一个chunk,作为选项,dbspace可镜像。
Root name:缺省rootdbs
Root size:指定了根dbspace的初始chunk的大小,以KB为单位
Primary Path:设备路径名
Offset:偏移量,初始chunk的偏移量,以防OnLine将磁盘上的开始控制信息覆盖掉。
Minrror Path:镜像chunk的路径名,无偏移量
日志文件的个数与大小
OnLine系统使用两种类型的日志。物理日志在内部使用,是某些类型的恢复用到的。逻辑日志是事务日志所使用,它形成一个可循环使用的日志空间池,供所有数据库共享。OnLine至少有三个逻辑日志。
原则:所有日志文件的总尺寸占Root Size的1/4,Phy.log.size与Log.log.size之间的比例为1:3,Number of logieal.log至少为3。
当一个逻辑日志写满后,应将其备份到磁带上,一旦一个日志文件备份到磁带上后,OnLine会检查该日志师傅可以释放,若该日志中不包含任何活动事

务的记录,OnLine释放该日志以重用,否则不能释放,直制这些事务完成。一旦逻辑日志满,系统就会挂起。
5.共享内有参数
磁盘参数配量实后,按下ESC,系统自动切换到共享内存参数配置。
Server number:服务器号,若同一台机器上配置多个OnLine,多个OnLine应有不同的服务器号。
Serve name:当前OnLine一个标志名。
Dead lock Tineout:死锁超时,分布式系统中,查询死锁时间,它决定了当前OnLine系统等待过程,OnLine系统的反应时间,若在该时间内未收到过程系统的反应,则放弃该查询。
Forced Residency:强制驻留。意味着OnLine的共享内存所所使用的物理内存不被UNIX对换到磁盘。它被强制驻留到内存中。
Number of page cleaners:清页进程数目。清页进程是OnLine系统的一种守护进程,其工作是将共享内存刷新到磁盘上,建议为每个存放有INFORMIX—OnLine数据库的磁盘配置一个清页进程。清页进程0—32之间,若为0,则由tbinit来承担,若>0,主控进程(tbinit)成为这些清页进程的管理者。
Phy.sical.size
Log.Buffer.Size 为减少磁盘1/0次数,物理日志和逻辑日志先写到缓冲区以后再将缓冲区刷新带磁盘上。提高效率,物理日志,缓冲区可设为0,即不要缓冲区,提高安全性。
Max # of logical logs指定系统中最多可有多少个逻辑日志。最小值是Number of logical logs。最大值同系统页的大小有关。
Max # users,指定有多少用户存取OnLine。最小值P+5(4+1)。P为清页进程个数。4(tbinit,tbmonitor,sqlturbo,tbtape,mirror(1)),最大用户数为1000。
Max # locks:锁的个数。最小值20*users,大量锁可提高系统的并发性,一般该值设大一点。最大值为256000,太多了也会造成浪费。
Max # Butters:OnLine使用的最大数量的缓冲区。最小值为4*users,最大值为32000。该值很重要,影响到系统的性能,但小OnLine效率低,太大影响UNIX的执行效率,以而影响到OnLine,一般取10倍于用户数。
Max # chunks:OnLine可使用的最大的chunks数量。
Max # 0pen Tblspaces:决定可以打开的表的个数。
Max # Dbspace:OnLine所能创建的最多的dbspace数目,最小数是1,最大数是Max #chunks。
配置完后接ESC。系统问是否保留修改
修改共享内存,不必重新初始化,以免数据丢失,可通过以下途径修改:
·利用参数菜单的共享内存有关项
·修改tbconfig文件的内容
三、INFORMIX—OnLine的磁盘结构
1. Informix—OnLine的数据管理
数据管理包括磁盘上的数据库的组织,空间的分配与使用,数据库访问的方法。INFORMIX—OnLine没有依赖UNIX文件系统完成这些功能,而是使用它自己的方法管理磁盘上的数据。
Chunks
Chunks是分配给OnLine的磁盘空

间,它既可以是生(原始)设备,生设备的一块,一个热设备(基于块的设备),热设备的一块,或一个UNIX文件(熟文件),当你分配给OnLine系统的一个chunk时,用三个参数定义它:路径名,偏移量和大小。
Pathname是UNIX识别该chunks的方法。
Offset是指准备用作chunk的设备的物理开始部分,单位是字节。例如,我们不可使用一生设备的最开始的10K字节,用热设备文件时,则可以不管。
Size是指从偏移量开始的空间大小。
Pages是OnLine使用的基本输入输出(长问短I/O)单位。
OnLine在所有页上的使用了一种数据结构,这种数据结构的最开始部分称为头部header,包含有24个字接信息,主要用于跟踪记录该页中的数据情况。该页的最后4个字节作为时间戳。从页尾开始向表的前端方向增长的部位称为槽表(slot table)
空余空间=页大小—28字节

24字节头 pages
4字节时间
slot表

 page header(24bytes)

Slot Table TS

Time Stamp(4bytes)
Extents
作为一个表分配的磁盘空间的单位是Extents。一个Extent是磁盘上的一块连续空间,它的大小因表的不同而不同。当一个表被创建时,Extent的大小被指定,每个表都有两个Extent参数与之相关联,一个是Extent的大小,一个是Next Extent的大小。当分配给一个表的所有的Extents在逻辑上组合在一起,叫做tblspace。
Tblspace




Tblspace A










Tblspace B

Extents的内容
①.数据页
分配给一个表的所有extent将适合该表有关部门数据的所有信息。在extent内部,组成extent的页有不同的用途,对某一页来说,将被用来存储表中的一种类型的信息。
page page
page page row row
 row
 row row


Slot 共5行,所以5个slot
Rowid page#,slot#
3byte 1byte
②. extent的溢出。用于存储长度超过页的行的剩余部分。通过向前指同其他部分连接起来,向前指针类似于Rowid,它指出剩余部分存储在哪些页上。这样,如果一行在一页上放不下时,该行的剩余部分继续存放在其它页上,前一页前端的4个字节用于指示后一页的位置。
四、INFORMIX—OnLine空间管理
INFORMIX—OnLine的空间管理内容并不太复杂,无非就是增、删、改等操作,下面分别述之。
1. 添加一个dbspace或bolbspace
给出dbspace或bolbspace名,然后确定是否需要镜像,mirror[Y/N],是否临时dbspace T

emp[N],给出路径名、偏移量和空间大小。
2. 改变dbspace in mirror状态
mirror有3种状态, Y. N. X
Y—已镜像,Mirrored
N—没镜像,Not Mirrored
X—新镜像,但不能使用,Newly Mirrored
但可以改变dbspace和bolbsapce mirror状态,但是当主chunk已坏时,不能改变成无镜像,因为此时只有浆像chunk在工作。
如果你给一个dbspace和bolbsapce加镜像,你必须给出镜像chunk。注:当dbspace的逻辑日志正在做备份时,这项工作不能做。
如果主chunk包含逻辑日志,系统回发出让你备份的警告信息,同时,还将dbspace的镜像状态被标识为X。
一般来说,镜像chunk与主chunk尽量不在同一块设备上,这样,当主chunk有故障脱机时,不致影响到镜像chunk。
3. 删除一个数据库空间
要删除一个dbspace必须满足下面的条件:
·该dbspace必须没有表和数据库,既该dbspace必须为零。
·不能删除rootdbs。
 当删除一个dbspace或bolbspace,该dbspace或bolbspace所用的chunk就被释放出来。
如果删除的是一个镜像的dbspace,那所有与之相联系的chunks都将被删除。
4. dbspace的状态信息
dbspace—informix,显示出dbspace的号,名字,chunks数目创建时间,mirror状态,是否临时。
在多个dbspace的状态上,按ctrl-B或F3就进入了dbspace的chunks状态的信息栏。
显示信息有chunk ID,chunk offset,Page used,Full pathname,status
其中status P—primarry chunk M—Mirror chunk
I—Inconsistent O—OnLine
D—Down R—Recovery
改变chunk的状态
在光条上按ctrl-B,主要从C—D或从D—R
注意:不能将主chunk与镜像chunk同时改为D。
5. 增加一个chunk
要给出dbspace的名字,其状态是否镜像,然后给出其pathname。
6. 使用onspace命令行,创建dbspace
syne on space -c [-b] [-d] [-g] [-m] [-o] [-p] [-s] [-t]
-a 创建
-b bolbspace name
-d dbspace name
-g bolbpage size
-m mirror path name
-p path name
-o offset KB
-s size in KB
-t temporary
eg. $ onspace-c –d dbspace –o 1600 –p /dev/dbsz –s 3000
删除dbspace
syntax:onspace -d spacename
删除chunks
syntax: onspace -d [-m] [-o] [-p]
-d space
-o offset
-p pathname
增加chunk
syntax: onspaces -a [-m] [-o] [-p]

五、INFORMIX—OnLine模式管理
OnLine有下面几种模式:
·脱机 offline:OnLine根本没有运行,没有任何共享内存被分配。
·脱机 OnLine:系统已启动,允许用户访问数据库,最常见的。
·静止Quiescent:OnLine进程在运行,不允许DBA以外的用户访问。
·关闭 close:当前用户可继续运行,其它用户不能访问。
·恢复recovery:快速恢复或从系统

备份恢复时。
改变模式的菜单:
staraup 脱机 静止
OnLine 静 脱机
Graeful-shctdow 静止
允许已基诺的用户工作,但不允许其它新用户进入。当所有用户都退出时,进入静止模式。
联机 关闭 静止
Immediate-shutdow 脱机 静止,强制中断所有用户访问,回所有活动事务,并置于静止模式。
Take-office 脱机 脱机,相当于先执行Immediate-shutdow,然后终止所有OnLine守护进程,释放OnLine占用的所有用户资源。
六、INFORMIX-OnLine容错机制
1. 错误类型
系统错误----计算机系统发生的错误
磁盘错误----包含内部OnLine信息的磁盘变得不可使用
系统失败----与计算机和磁盘相关的不费吹灰之力不可使用,或OnLine系统的数据被中断。
恢复机制:快速恢复
从系统备份恢复
镜像恢复
系统崩溃----由于电源故障或其它原因使系统偏机,OnLine系统必须能在计算机重新启动恢复到一个一致状态,快速恢复用于此目的。
磁盘崩溃----包含OnLine的磁盘有故障,可用备份来恢复,并利用逻辑日志前滚到磁盘不可用时刻。然若有磁盘镜像,则无妨。
系统故障:备份恢复,日志回滚。
2. 快速恢复
快速恢复是一种自动的容错机制,每当OnLine从脱机模式
静止模式时都会执行。两个目的:
①.物理日志用于保持OnLine的物理一致性,将系统恢复到最近一个检查点时刻。
②.逻辑日志用于保持OnLine的一致性,通过前扇检查点以来,已提高的事物和回滚所有未完成的事务而实现的。
③.正常关机后的状态
当正常关机时,系统完成的最后一个活动是检查点活动。它适使得物理日志清主,并在逻辑日志记录一条检查点记录。消息日志中记录系统已关机。
物理日志 逻辑日志
空 checkpoint record
Tue Tek 3 13:44:18 1998
13:44:18 shutdown mode
13:44:30 Quiescent mode
13:44:31 INFORMIX- OnLine stopped
信息日志
④.发生错误以后的状态
物理日志
Tub Feb 3 13:44:18 1998
13:39:39 checkpoint
13:
上次检查的前映象

物理日志非空,逻辑日志最后
一条记录非checkpoint,消息
checkpointed record 日志也无关机记录。
Action record
Action record
Action record

3、快速恢复:分三步
①.第一步,从物理日志中恢复前映象

。方法:将前映象从磁盘中读入共享内存缓冲池中。然后完成一次检查点工作,将共享内存中的页刷新到磁盘。
共享内存缓冲池



CHUNK


物理日志
②. 第二步,定位检查点记录,并前滚检查点后的所有事务。
这将重新执行最后一检查点的所有事务。

定位检查点记录

前滚检查点后的所有事务


③. 第三步,回滚未提及的事务
取消所有在发生故障时未完成的事务,保持逻辑一致性。
这保证在发生故障时,完成的事务被完成,没有完成的事务被
回滚。此时,启动过程可以进行下去,系统进入静止状态。
注意:快速恢复只能恢复记录在逻辑日志中的事务。如果
使用缓冲模式,完全有可能,一个提高的事务并未将其事务记录写到日志上。在这种情况下,故障发生时,已存在逻辑日志中的事务将丢失。
4、 无日志数据库的快速恢复
如果没有使用事务日志,则第二、三步不能实现,因此,数据
库也只能恢复到最后一个检查点的状态。
5. 快速恢复操作的消息日志的内容
e.g. Wed Feb 11 13:15:40 1978
13:15:40 INFORMIX-OnLine Initialized-Shared(Mermory)
13:15:40 Physcial Recovery Stated
13:15:40 Checkpoint complteted
13:15:40 Physcial Recovery complete 5 pages Restored
13:15:42 Checkpoint complteted
13:15:42 Logical Recovery Complete
3 Committed , 2 Rolled back open o Bad
6. 镜像时,介质失败

Shared Memory


Primary chunk mirror chunk

当使用镜像时,OnLine系统在主chunk失败时,自动切换到镜像chunk,并标识主chunk为脱机状态,同时写一条消息到消息日志文件,表明chunk坏。
如果都坏,OnLine系统无法初始化,必须先修复chunk设备,然后从磁带恢复。
七、INFORMIX—OnLine日志管理
1. 增加一个逻辑日志
在静止模式下选择Addlog项,输入要增加的新的逻辑日志所在的dbspace名字。
注:·不能改变逻辑日志文件的大小,其大小在初始化时已确定。
·应指定dbspace名。
·新增日志文件标志为A,必须完成一次0级备份才可应用。
2. 删除一个逻辑日志
在静止模式选择Drop-log
注:只能删除关闭的逻辑日志,既状态为F的OnLine必须至少有3个可用逻辑日志,删除逻辑日志后应完成备份。
3. 修改物理日志
在parameters选择physical-log改变物理日志的大小和所属dbspace,但并不立即生效,初始化内存后才生效。
改变

物理日志使之生效前,需做一次系统备份,否则OnLine恢复机制将不能运作。
4. 日志备份
①.自动备份
Auto-backup
·所有满的逻辑日志文件都将拷贝到磁带上。
·可在同一带上,也可跨越多带。
②.连续备份
连续备份会启动一个连续运行的进程监视逻辑日志,一旦发现有满的逻辑日志就将其备份。该进程要一个专用终端和磁带机设备。
5. 改变日志模式
logicallogs database
OnLine要在静止模式下,模式类型
No logging 无日志
Unbufferd logging非缓冲日志
Buffered logging 缓冲日志
MODE ANSI database 标准ANIS模式
无 有 立即备份OnLine系统
有 无 可在任何时候进行
几种日志类型比较:
Insert
Update 数


逻辑日志
有故障,无法完全恢复,因为无事务记录,无法恢复和回滚事务
缓冲日志 缓冲区
Insert
 Update
 Commit 数
 据
 库
Insert
Delete
Commit
Insert
Update
Commit
… 满 Inset
.
. DISK
.
commit
优点:减少1/0操作次数,提高效率
缺点:系统失败时,未存盘的事务会被丢掉失。

无缓冲日志和ANS模式
Update
Delete
Commit 数

库 Update
Delete
commit .
.
update
delete
commit
磁盘

优点:安全性好,可靠。
缺点:1/0操作频繁,效率低。
6. 日志信息
status—logs,或命令行tbstat—l
F—关闭,C—正在接受事务,B—已备份,U—在使用,A—增加,L—包含最后一个检查点
八、INFORMIX—OnLine内部操作
更新过程
物理日志缓冲 物理日志
逻辑日志缓冲 逻辑日志

缓冲池 Dbspace

① 如果所需要的不在共享内存,则从磁盘读进该页面。
② 修改页面之前,先将其拷贝物理日志缓冲区,然后再写到物理日志中。
③ 在共享内存中修改该行,如打开了事务日志,则将更新写到逻辑日志缓冲区,然后再写到逻辑日志缓冲。
④ 在一定时刻,系统内存与磁盘同步,这叫做检查点。
1. 将页读进共享内存
如果OnLine无法在Share Mermory中找到页,它必须将所需页从磁盘读进共享内存。因此,必须找到一个缓冲区容纳该页。为找到一个缓冲区,服务进程随机选用一个LRU队列,检察其干净队列(空闲队列),并从队列选择空闲(没被使用,并没被其它用户锁住)的最近最少使用的缓冲区。如果队列中没有找到,OnLine会挂到下一个队列,此外,如果一个队列被其他用户锁住,OnLine将跳过该队列。
如果服务器检查了所有队列都没有找到符合条件的

干净页,则它将从脏队列中选择一个最近最少使用的缓冲区,并将其内容简介刷新到磁盘(这种写称为前台写),因此,该缓冲区成为干净缓冲区,并格至干净队列,要读进的页就放在该页中。
LRU队列
脏队列
LRU
空闲队列
LRU
脏队列
LRU
空闲队列
LRU
2. 物理日志
缓冲池
服务器进程 修改缓冲池页面
pager



pager···pager
缓冲区满
物理日志缓冲
物理日志
虚线表示若采用无缓冲日志
当页第一次进共享内存时,它与磁盘的内容一样。当该页中的任何数据修改时,内存与磁盘不一致,如果修改的页刷到磁盘之前,发生了故障,数据的完整性就会受到损害,物理日志即负责处理这个问题。
3. 清页进程的活动
当一个脏队列中的脏缓冲区的数目与该队列中的缓冲区总数之比超过指定的比例时,主守护进程(tbinit)将指派清页进程去清除LRU队列。
清页进程(后台写),后台进程
清页进程被周期的唤醒,其工作是搜索LRU队列,刷新队列中过多的脏页到磁盘,若LRU队列中脏页数目超过60%,清页进程就把修改的页写到更多的可能在LRU中找到干净页。在每次活动结束时,清页进程将根据自己做的工作的多少重新计算其空闲状态时间。


 

相关文档
相关文档 最新文档