第11章 日誌記錄
資料庫伺服器將“邏輯日誌記錄”儲存在“邏輯日誌”中。邏輯日誌由邏輯日誌檔案組成,資料庫伺服器在磁碟上管理它們,直至這些檔案已安全地轉為離線(備份)。資料庫伺服器管理員將保留已備份的邏輯日誌檔案,直至在資料恢復中需要用到它們,或直至管理員決定不再需要恢復這些記錄。
一、資料庫日誌狀態
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 第15 章 物理日誌記錄、檢查點和快速恢復; 第16 章 管理物理日誌
- 第12章 管理資料庫日誌記錄方式資料庫
- 第13章 邏輯日誌
- php日誌,記錄日誌PHP
- 日誌記錄器
- 第14章 管理邏輯日誌檔案
- Laravel sql 日誌記錄LaravelSQL
- secureCRT記錄操作日誌Securecrt
- 記錄日誌檔案
- PHP日誌記錄方法PHP
- oracle日誌操作記錄Oracle
- 日誌記錄 PHP下往linux目錄下寫日誌PHPLinux
- Oracle補充日誌及日誌記錄規則Oracle
- db2不記錄日誌插入記錄DB2
- 記錄騰訊雲使用日誌
- 記錄 | 實習日誌 9
- mysql開啟日誌記錄MySql
- 記錄 sql 查詢日誌SQL
- SecureCRT自動記錄日誌Securecrt
- Appfuse:記錄操作日誌APP
- storm 問題日誌記錄ORM
- 《Java核心技術(卷1)》筆記:第7章 異常、斷言和日誌Java筆記
- monolog 日誌記錄器解析Mono
- iptables防火牆如何記錄日誌防火牆
- 使用Redis記錄系統日誌Redis
- log4net日誌記錄
- 使用Rsyslog記錄Apache日誌Apache
- secureCRT自動記錄log日誌Securecrt
- 使用 .NET Core 的日誌記錄
- Python多程式記錄日誌Python
- 駭客攻擊日誌記錄(轉)
- Rust 實現日誌記錄功能Rust
- Laravel 指定日誌檔案記錄任意日誌Laravel
- 操作日誌記錄(包括輸出至自定義日誌檔案)
- NAS中如何檢視日誌記錄?
- python日誌記錄器的配置Python
- 如何優雅地記錄操作日誌?
- 日誌記錄模組logging