標籤:模型 針對 地圖 插入 允許 個數 沒有 事物 伺服器
SQL SERVER 2005 以後三種復原模式: 簡單(Sample),完全(Full),大批量(Bulk_Logged)
完全備份模型
完全備份模式是指在出現資料檔案毀壞時遺失資料的風險最小。如果一個資料庫在此模式下是,所有操作都會被完全記錄下來,這意味著記錄使用INSERT操作增加的每一行,使用DELETE操作刪除的每一行和使用UPDATE操作修改的每一行,SQL server還會將使用BCP和BULK insert 操作插入的每一行完全被記錄到事物日誌中。如果遇到一個Database Backup之後一直在做著定期交易記錄備份,那麼我們就可以將資料庫恢複到最後的記錄備份之前任何一個時間點的狀態。另外,如果在資料檔案出故障之後有記錄檔可用,那麼我們可以將DB恢複到故障前已提交的最後一個日誌的狀態。SQL SERVER2005以後也支援一個成為日誌標識(LOG MARKS)的特性,這允許我們在交易記錄中放置一些參照點。如果資料是在完全復原模式下,我們可以選擇恢複某個日誌標誌時的狀態。
在完全復原模式下,SQL SERVER 也會完全記錄CREATE INDDEX 操作,當從包含建立索引的交易記錄備份中恢複時,由於索引不必重建,恢複操作會進行的非常迅速---所有的索引頁都已經作為Database Backup的一部分被擷取。在SQL SERVER 2000之前sql server只記錄一個所有已經被建立的事實,這樣一來當我們從記錄檔備份中恢複時,整個索引將會不得不重建立立。
看起來完全復原模式是最好的,但是這是要付出其他的代價的。其中最大的待機就是交易記錄會相當的大。
大大量復原模型(BULK Logged)
大大量復原模式允許我們在出現介質故障時完全地還原資料庫,它還能夠對某些大大量操作提供最佳的效能和最小的日誌使用空間。這些大大量操作包含 BULK INSERT, BCP, CREATE INDEX, SELECT INTO, WRITETEXT 和UPdatetext。對完全復原模式,這些操作是完全被記錄的,但是對大大量復原模式,對它們的記錄是最小量的。
當執行大大量操作中的某一種操作時,SQL SERVER 只會記錄該操作曾經發生過和關於該操作分配空間的資訊。但是因為SQL SERVER跟蹤了該大大量操作實際上修改了那些區,所以該操作還是可以完全恢複的。在資料庫中的每一個資料我那件都至少有一個成為大批量更改地圖(BULK CHANGE MPA, BCM)的頁面,SQL SERVER對該頁面的管理類似 GAM SGAM的管理。
因為能夠最小量的記錄大批量的操作,所以這些操作能夠比在完全備份模式時執行的要快的很多。在正確的BCM版面設定各個標誌位需要一些開銷,但是與記錄每一個對資料和索引的單獨更改相比,翻轉這些位的開銷要小的多。
如果資料庫在bulk logged模式下並且沒有實際執行任何大大量操作,以為該日誌將會包含資料庫所有改變的完整順序記錄,所以我們能夠將資料庫還原到任一個時間點或者命名日誌標識。
在備份日誌期間會有些開銷,除了將交易記錄的內容複寫到備份介質,SQL SERVER會掃描BCM頁面並在備份交易記錄的同時備份所以修改過的區。記錄檔自身會保持很小,但是該日誌的備份可能會比記錄檔大上很多倍,所以記錄備份需要更多的時間並且可能會比FULL模式消耗更多的空間。還原一個在大批量模式所做的記錄備份所消耗的時間與還原一個在FULL模式下所做的記錄備份用的時間基本相同。還原過程不需要重做各個操作,恢複所有資料和索引結構所需要的資訊都包含在記錄備份中。
簡單恢複模型(Sample)
簡單恢複模型(Sample)
簡單恢複模型提供了最簡單的備份----恢複策略。每當有檢查點發生時(檢查點會定時地,經常地發生),交易記錄都會被階段。因此,所能進行備份的備份類型就是那些不需要記錄備份的類型。這些類型的備份有完全備份Database Backup,增量備份,部分完全備份,部分增量備份和針對唯讀檔案組的檔案組備份。在簡單復原模式下如果試圖進行記錄備份,那麼會收到錯誤資訊,因為該模式的備份不需要日誌的,一旦它所包含的所有事務被提交或者復原,該日誌的各部分就能夠被重新利用,並且伺服器或者事物出現故障時恢複也不需要這些事物資訊。事實上,一旦資料庫改變到簡單模式下,日誌就會被截斷。
需要注意:簡單模式不是不記錄日誌。所謂的“簡單”是我們的備份策略不需要擔心記錄備份,雖然單個的日誌記錄並不如在完全備份模式下的,但是在簡單模式下是的所有操作都會被記錄。因為在大大量復原模式中談論的大大量操作在這裡也會以最小量記錄,所以簡單模式下一個資料庫的日誌可能沒有完全模式下的日誌增長那麼快那麼多。這並不是說在簡單模式下我們就不用關係記錄檔的大小。就像在任何復原模式中一樣,活動食物的日誌記錄無法被截斷並且在最老的活動食物之後開始的所有事物的日誌記錄都不能被截斷。所以,如果有大型或者長時間的事務,仍然會需要大量日誌空間。
SQL SERVER資料庫 三種 復原模式