對于資料庫維護,主要使用DBCC CHECKDB來實作,以下是對大型資料庫的使用說明,小型資料庫一般直接使用就可以了:
1、2008(2005我不确認)已經實作了快照檢查,也就是當你執行DBCC時,DBMS會先快照出一個資料庫,然後在快照上執行檢查,這樣對原來的庫不造成鎖的影響。
2、使用Physical_only選項,可以以較少的開銷檢查資料庫的實體一緻性。并且能檢查出會危及使用者資料安全的殘缺頁、校驗和錯誤及常見的硬體故障。是以對于頻繁使用的生産庫,建議使用該選項。,可以極大地縮短對大資料庫運作DBCC CHECKDB的時間。
3、CHECKDB所花費的時間主要取決于:
a、資料庫自身大小;
b、目前I/O讀寫能力和繁忙程度;
c、目前系統CPU負荷;
d、目前資料庫的并發修改量;
e、存放tempdb磁盤的速度;
f、資料庫對象類型:如LOB會花更多時間;
g、CHECKDB的參數;參數的選擇會影響DBCC所做的事情多少;
h、資料庫的錯誤類型和錯誤數量;
按照别人的經驗:1T的資料庫如果沒錯誤,checkdb可能要花上20小時。如果一個成百上千的資料庫,哪怕隻有2、300G。可能一天都跑不完。
現在入正題:
如果資料庫設計了分區表機制,做起來會簡單一些,對于存儲曆史資料的分區檔案組,由于本身資料不發生變化,可以設為隻讀模式,防止任何錯誤修改。每個月左右經行一次DBCC CHECKFILEGROUP即可。對于目前資料,最好一周兩次,單獨做DBCC CHECKFILEGROUP。
如果沒有分區的超大型資料庫,可以參照以下方式:
周一到周三:每天運作一組DBCC CHECKTABLE
周四:DBCC CHECKALLOC+一組DBCC CHECKTABLE
周五周六:每天運作一組DBCC CHECKTABLE
周日:DBCC CHECKALLOC+DBCC CHECKCATALOG+一組DBCC CHECKTABLE。
對于TB級資料庫可以嘗試使用這個方法。