第11章 日誌記錄

liahtobjtosh發表於2009-10-18
第11章 日誌記錄[@more@]

資料庫伺服器將“邏輯日誌記錄”儲存在“邏輯日誌”中。邏輯日誌由邏輯日誌檔案組成,資料庫伺服器在磁碟上管理它們,直至這些檔案已安全地轉為離線(備份)。資料庫伺服器管理員將保留已備份的邏輯日誌檔案,直至在資料恢復中需要用到它們,或直至管理員決定不再需要恢復這些記錄。

一、資料庫日誌狀態
1、未緩衝的事務日誌記錄
2、已緩衝的事務日誌記錄
3、符合 ANSI 的事務日誌記錄
4、不記錄

二、檢視資料庫日誌狀態
select is_logging,is_buff_log,is_ansi from sysmaster:sysdatabases where name='資料庫名';

三、
“邏輯日誌記錄”本身長度可變。所有“邏輯日誌記錄”在資料庫伺服器將其寫入磁碟上的“邏輯日誌”之前,均經過“共享記憶體”中的“邏輯日誌緩衝區”。即使對於“未緩衝的事務日誌記錄”形式的資料庫。所以可見“邏輯日誌記錄”的生存週期至少經過“共享記憶體”中的“邏輯日誌緩衝區”以及磁碟上的“邏輯日誌”兩個階段。

1、未緩衝的事務日誌記錄
一旦有事務提交,則資料庫伺服器就立即清倉記錄。由於資料庫伺服器清倉緩衝區時,系統會把已使用的頁寫入磁碟(未使用的頁,當然不會被寫入磁碟)。而已使用的頁包含一些僅部分已滿的頁,所這樣就浪費了一些空間,就導致了磁碟上的邏輯日誌檔案會更快地填滿。

2、已緩衝的事務日誌記錄
事務日誌記錄儘可能久地被保留在邏輯日誌緩衝區中。直至發生以下情況之一,這些事務日誌記錄才會從共享記憶體中的邏輯日誌緩衝區重新整理到磁碟上的邏輯日誌:
a.緩衝區已滿。
b.具有未緩衝日誌記錄的資料庫上的提交清倉了緩衝區。
c.出現檢查點。
d.連線關閉。

從“b.具有未緩衝日誌記錄的資料庫上的提交清倉了緩衝區”,可得知資料庫伺服器上的所有資料庫使用相同的邏輯日誌和相同的邏輯日誌緩衝區(可見P11-6或)。這也會遇到一個問題,如果一臺資料庫伺服器上的兩個資料庫分別採用“未緩衝的事務日誌記錄”和“已緩衝的事務日誌記錄”方式,那麼資料庫伺服器將“邏輯日誌記錄”寫入磁碟上的“邏輯日誌”的頻繁也會很高。

3、符合 ANSI 的事務日誌記錄
符合 ANSI 的資料庫對事務處理強制執行 ANSI 規則,始終使用未緩衝的事務日誌記錄。

4、不記錄
資料庫處於此狀態下將不記錄事務,但會記錄其它操作。

四、預設狀態
如果 CREATE DATABASE 語句不指定日誌記錄狀態,則建立無日誌記錄的資料庫。
如果 CREATE DATABASE 語句指定了日誌記錄狀態但沒有為其指定緩衝方式,則預設為未緩衝的日誌記錄。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22565551/viewspace-1027946/,如需轉載,請註明出處,否則將追究法律責任。

相關文章