1 基本介紹
每個數(shù)據(jù)庫都具有事務(wù)日志,用于記錄所有事物以及每個事物對數(shù)據(jù)庫所作的操作。
日志的記錄形式需要根據(jù)數(shù)據(jù)庫的恢復(fù)模式來確定,數(shù)據(jù)庫恢復(fù)模式有三種:
完整模式,完全記錄事物日志,需要定期進(jìn)行日志備份。
大容量日志模式,適用于批量操作的數(shù)據(jù)庫,可以以更壓縮的方式處理日志,需要定期進(jìn)行日志備份。
簡單模式,也有日志文件,只是該模式下可以通過checkpoint自動重用virtual log file,所以日志文件會處于一直重復(fù)使用的過程,保持一定大小,但是,如果有一個事務(wù)啟動,很久沒有commit,那么從這個事務(wù)開始到最后commit的時間段內(nèi)的事務(wù)日志存儲空間都無法checpoint自動重用,這時,你很可能看到一個很大的日志文件;注意,簡單模式下是無法進(jìn)行日志備份。
數(shù)據(jù)庫里邊,任何對數(shù)據(jù)庫的讀寫都是在內(nèi)存頁中找到對應(yīng)的數(shù)據(jù)也,再做修改,如果內(nèi)存頁中不存在數(shù)據(jù)頁,則從磁盤加載如內(nèi)存中。當(dāng)一個修改操作發(fā)生時,修改的將是內(nèi)存頁中對應(yīng)的數(shù)據(jù)頁面,同時也會實(shí)時記錄到日后文件ldf中。那么,什么時候數(shù)據(jù)會被同步到mdf文件呢,只有以下三種情況:
做checkpoint時,后續(xù)會專門整理checkpoint的相應(yīng)文章;
Lazy write運(yùn)行時,即內(nèi)存出現(xiàn)壓力,需要把內(nèi)存中的數(shù)據(jù)頁寫入到磁盤,騰出內(nèi)存空間;
eager write時,即發(fā)生b