GB | BIG5
|
| 首頁 > 數據庫 > Informix > 正文 |
 |
| INFORMIX ONLINE 介紹 |
| http://www.xici.net 作者: springwind (2001-05-11 13:57:20) |
一、簡介
Informix服務器
1. 兩種數據庫服務器產品:
InformixSE 容易操作,適用中小型數據庫。
InformixOnLine 高性能,高可用性,數據一致性,分布式數據庫,支持多媒體。
2. 服務器的概念;控制數據存取的一種機制。
3. 兩種服務器的性能對比:
SE OnLine
安裝 簡單,不需調查 安裝進行參數配置
鎖 行、表庫鎖 行、責、表、庫四級隔離
系統故障恢復 從備份向前 快速恢復
管理 OS級 DB-monitor命令行工具
4. 主要特點:
磁盤管理系統,共享內存、緩沖及通訊,容錯機制,高可用性,支持多媒體,分布式數據庫存取,使得它特別適合聯機事務處理(OLTP)。
5. 雙進程機構
InformixOnLine使用一種雙進程結構,應用程序和數據庫訪問分別由兩個不同的程序控制,通常應用程序成為客戶,而數據庫訪問程序成為服務器。通常這種結構稱為客戶/服務器結構。
這裡OnLine為服務器,DBACCESS,Informix4GL,InformixSELZ等等是客戶。客戶與服務器間的聯系通過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。
InformixOnLine系統必須至少有
一個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,將共享內存被修改的頁刷新到磁盤,使得磁盤上共享內存的數據保持同步。
二、INFORMINOnLine配置
1. 安裝INFORMINOnLine。(過程略)。
2. 配置UNIX的核心參數
INFORMINOnLine使用共享內存,UNIX核心必須按照OnLine的要求配置足夠的內存資源。/usr/informix/release/ONLINE5.0(7.0)
SHMMAX定義單個共享內存的大小
共享內存 SHMSEG定義單個進程可訪問的共享內存段的最大數量
SHMMNL定義整個系統所有的共享內存的數量
SEMNL可用信號量的最大數目
信息量 SEMMSL個集內信號量的最大數目
SEMMNS信號良是一個標志,或稱為互鎖機制 INFORMINOnLine通過使用信號量用來控制進程。
改變這些參數,需要重新建立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系統的一種守護進程,其工作是將共享內存刷新到磁盤上,建議為每個存放有INFORMIXOnLine數據庫的磁盤配置一個清頁進程。清頁進程032之間,若為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文件的內容
三、INFORMIXOnLine的磁盤結構
1. InformixOnLine的數據管理
數據管理包括磁盤上的數據庫的組織,空間的分配與使用,數據庫訪問的方法。INFORMIXOnLine沒有依賴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個字節用指示一頁的位置。
四、INFORMIXOnLine空間管理
INFORMIXOnLine的空間管理內容並不太復雜,無非就是增、刪、改等操作,下面分別述之。
1. 添加一個dbspace或bolbspace
給出dbspace或bolbspace名,然確定是否需要鏡像,mirror[Y/N],是否臨時dbspace Temp[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的狀態信息
dbspaceinformix,顯示出dbspace的號,名字,chunks數目創建時間,mirror狀態,是否臨時。
在多個dbspace的狀態上,按ctrl-B或F3就進入了dbspace的chunks狀態的信息欄。
顯示信息有chunk ID,chunk offset,Page used,Full pathname,status
其中status Pprimarry chunk MMirror chunk
IInconsistent OOnLine
DDown RRecovery
改變chunk的狀態
在光條上按ctrl-B,主要從CD或從DR
注意:不能將主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]
五、INFORMIXOnLine模式管理
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設備,然從磁帶恢復。
七、INFORMIXOnLine日志管理
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. 日志信息
statuslogs,或命令行tbstatl
F關閉,C正在接受事務,B已備份,U在使用,A增加,L包含最一個檢查點
八、INFORMIXOnLine內部操作
更新過程
物理日志緩沖 物理日志
邏輯日志緩沖 邏輯日志
緩沖池 Dbspace
如果所需要的不在共享內存,則從磁盤讀進該頁面。
修改頁面之前,先將其拷貝物理日志緩沖區,然再寫到物理日志中。
在共享內存中修改該行,如打開了事務日志,則將更新寫到邏輯日志緩沖區,然再寫到邏輯日志緩沖。
在一定時刻,系統內存與磁盤同步,這叫做檢查點。
1. 將頁讀進共享內存
如果OnLine無法在Share Mermory中找到頁,它必須將所需頁從磁盤讀進共享內存。因此,必須找到一個緩沖區容納該頁。為找到一個緩沖區,服務進程隨機選用一個LRU隊列,檢察其幹淨隊列(空閑隊列),並從隊列選擇空閑(沒被使用,並沒被其它用戶鎖住)的最近最少使用的緩沖區。如果隊列中沒有找到,OnLine會掛到下一個隊列,此外,如果一個隊列被其他用戶鎖住,OnLine將跳過該隊列。
如果服務器檢查了所有隊列都沒有找到符合條件的幹淨頁,則它將從臟隊列中選擇一個最近最少使用的緩沖區,並將其內容簡介刷新到磁盤(這種寫稱為前台寫),因此,該緩沖區成為幹淨緩沖區,並格至幹淨隊列,要讀進的頁就放在該頁中。
LRU隊列
臟隊列
LRU
空閑隊列
LRU
臟隊列
LRU
空閑隊列
LRU
2. 物理日志
緩沖池
服務器進程 修改緩沖池頁面
pager
pager﹒﹒﹒pager
緩沖區滿
物理日志緩沖
物理日志
虛線表示若採用無緩沖日志
當頁第一次進共享內存時,它與磁盤的內容一樣。當該頁中的任何數據修改時,內存與磁盤不一致,如果修改的頁刷到磁盤之前,發生了故障,數據的完整性就會受到損害,物理日志即負責處理這個問題。
3. 清頁進程的活動
當一個臟隊列中的臟緩沖區的數目與該隊列中的緩沖區總數之比超過指定的比例時,主守護進程(tbinit)將指派清頁進程去清除LRU隊列。
清頁進程(台寫),台進程
清頁進程被周期的喚醒,其工作是搜索LRU隊列,刷新隊列中過多的臟頁到磁盤,若LRU隊列中臟頁數目超過60%,清頁進程就把修改的頁寫到更多的可能在LRU中找到幹淨頁。在每次活動結束時,清頁進程將根據自己做的工作的多少重新計算其空閑狀態時間。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |