適用於:SQL Server
記憶體最佳化資料表會當做正常資料庫備份的一部分進行備份。 對於以磁碟為基礎的資料表,系統會作為資料庫備份的一部分驗證資料檔案與增量檔案配對的 CHECKSUM,以偵測儲存體毀損。
注意
在備份期間,若您偵測到記憶體最佳化的檔案群組中,一或多個檔案有 CHECKSUM 錯誤,則備份作業失敗。 在此情況下,您必須從最後的已知良好備份還原資料庫。
若您沒有備份,可以從記憶體最佳化的資料表和磁碟基礎的資料表匯出資料,並在卸除及重新建立資料庫之後重新載入。
包含一個或多個記憶體最佳化資料表之資料庫的完整備份,包含以磁碟為基礎的資料表所配置的儲存體(如果有的話)、作用中的交易記錄檔,以及記憶體最佳化資料表的資料檔和增量檔配對(也稱為檢查點檔案配對)。 不過,如 記憶體最佳化資料表的持久性中所述,記憶體最佳化資料表所使用的儲存空間可能會遠超過它在記憶體中的大小,而且會影響資料庫備份的大小。
完整資料庫備份
因為磁碟資料表的備份是相同的,所以此處的討論內容著重於只包含持久性記憶體最佳化資料表之資料庫的資料庫備份。 記憶體最佳化檔案群組中的檢查點檔案組可能處於各種不同狀態。 下表描述備份檔案的哪個部分。
| 檢查點檔案組狀態 | 備份 |
|---|---|
| 預先建立 | 僅限檔案中繼資料 |
| 施工中 | 僅限檔案中繼資料 |
| 啟用中 | 檔案中繼資料以及已使用的位元組 |
| MERGE 目標 | 僅限檔案中繼資料 |
| 等候記錄截斷 | 檔案中繼資料以及已使用的位元組 |
如需檢查點檔案組狀態的描述,請參閱 sys.dm_db_xtp_checkpoint_files (Transact-SQL) 及其資料行 state_desc。
包含一或多個記憶體最佳化資料表之資料庫備份的大小通常超過其在記憶體中的大小,但是小於磁碟儲存體的大小。 額外大小除其他因素外,也取決於已刪除資料列的數量。
估計完整資料庫備份的大小
重要
建議您不要使用 BackupSizeInBytes 值來估計記憶體內部 OLTP 的備份大小。
第一個工作負載情境主要是以插入作業為主。 在此案例中,大部分的資料檔案都處於使用中狀態,並且已完全載入,而且已刪除的資料列很少。 資料庫備份的大小與記憶體中的資料大小十分接近。
第二個工作負載案例適用於頻繁的插入、刪除與更新作業。 在最糟榚的情況下,在考量已刪除的資料列之後,每一個檢查點檔案組的載入程度為 50%。 資料庫備份的大小至少為記憶體中資料大小的兩倍。
使用記憶體最佳化資料表的資料庫差異備份
記憶體最佳化資料表的儲存體由資料檔和差異檔組成,如 記憶體最佳化資料表的持久性 所述。 具有記憶體最佳化資料表之資料庫的差異備份會包含下列資料:
記憶體最佳化資料表的存在並不會影響儲存磁碟資料表之檔案群組的差異備份。
作用中的交易記錄檔與完整資料庫備份中的相同。
對於記憶體最佳化的資料檔案群組,差異備份會使用與完整資料庫備份相同的演算法來識別作為備份對象的資料檔案和差異檔案,但接著會依下列方式篩選出其中一部分檔案:
資料檔案包含新插入的資料列,當該檔案已滿時,會關閉並標示為唯讀。 資料檔案只有在上一次完整資料庫備份之後關閉時,才會進行備份。 差異備份只會備份資料檔案,其中包含上次完整資料庫備份後插入的資料列。 例外情況是,在更新與刪除的情境中,部分已插入的資料列可能已被標記為待垃圾回收,或已被垃圾回收。
差異檔會儲存已刪除資料列的參照。 由於任何未來的交易都可能刪除資料列,因此差異檔在其生命週期內可隨時被修改,所以永遠不會關閉。 差異檔案一律會備份。 差異檔案通常使用不到 10% 的儲存空間,因此差異檔案對於差異備份大小的影響非常小。
如果記憶體最佳化資料表是您資料庫大小的重要部分,則差異備份能夠大幅減少資料庫備份的大小。 如果是一般 OLTP 工作負載,差異備份將會遠小於完整資料庫備份。