來(lái)源:巨靈鳥(niǎo)軟件 作者:進(jìn)銷存軟件 發(fā)布:2014/5/20 瀏覽次數(shù):4747
1、事務(wù)日志文件
事務(wù)日志文件,擴(kuò)展名為ldf,它是數(shù)據(jù)庫(kù)結(jié)構(gòu)中非常重要卻又常被忽視的部分。它是用來(lái)記錄數(shù)據(jù)庫(kù)更新情況的文件,它可以記錄針對(duì)數(shù)據(jù)庫(kù)的任何操作,并將記錄的結(jié)果保存到獨(dú)立的文件中。對(duì)于每一次數(shù)據(jù)庫(kù)更新的過(guò)程,事務(wù)日志文件都有非常全面的記錄。根據(jù)這些記錄可以恢復(fù)數(shù)據(jù)庫(kù)更新前的狀態(tài)。
2、作用
出于性能上的考慮,SQL Server將用戶的改動(dòng)存入緩存中,這些改變會(huì)立即寫(xiě)入事務(wù)日志,但不會(huì)立即寫(xiě)入數(shù)據(jù)文件。事物日志會(huì)通過(guò)一個(gè)標(biāo)記點(diǎn)來(lái)確定某個(gè)事物是否已將緩存中的數(shù)據(jù)寫(xiě)入數(shù)據(jù)文件。當(dāng)SQL Server重啟后,它會(huì)查看日志中最新的標(biāo)記點(diǎn),并將這個(gè)標(biāo)記點(diǎn)后面的事物記錄抹去,因?yàn)檫@些事物記錄并沒(méi)有真正的將緩存中的數(shù)據(jù)寫(xiě)入數(shù)據(jù)文件。這可以防止那些中斷的交易修改數(shù)據(jù)文件。
舉個(gè)例子,在一個(gè)銀行系統(tǒng)中,某個(gè)用戶需要轉(zhuǎn)帳。這個(gè)轉(zhuǎn)帳作業(yè)主要是通過(guò)兩個(gè)步驟來(lái)完成。第一個(gè)步驟就是扣減用戶帳戶中的金額; 第二個(gè)步驟是把錢(qián)轉(zhuǎn)入到另外一個(gè)用戶那里。現(xiàn)在如果在轉(zhuǎn)帳的過(guò)程中,第一步成功了,但是第二個(gè)步驟因?yàn)槟撤N原因出錯(cuò)了。如用戶提供的帳戶名字與實(shí)際轉(zhuǎn)帳的帳戶名字不符,則第二個(gè)操作就會(huì)失敗。此時(shí)整個(gè)轉(zhuǎn)帳操作就會(huì)以失敗而告終。但是現(xiàn)在的問(wèn)題是,第一個(gè)扣減的動(dòng)作在數(shù)據(jù)庫(kù)中已經(jīng)完成了。而實(shí)際卻是沒(méi)有轉(zhuǎn)帳成功,就造成了數(shù)據(jù)一致性的問(wèn)題。實(shí)際過(guò)程中如果應(yīng)用程序發(fā)出ROLLBACK 語(yǔ)句,或者數(shù)據(jù)庫(kù)引擎檢測(cè)到錯(cuò)誤,就使用日志記錄回滾未完成的事務(wù)所做的修改。也就是說(shuō),當(dāng)?shù)诙䝼(gè)操作失敗的話,應(yīng)用程序要發(fā)出一個(gè)ROLLBACK 語(yǔ)句,利用事務(wù)日志回滾功能,恢復(fù)第一步的操作。也就是說(shuō),把扣減金額的操作進(jìn)行恢復(fù),從而實(shí)現(xiàn)數(shù)據(jù)的一致性。類似的應(yīng)用,在數(shù)據(jù)庫(kù)開(kāi)發(fā)過(guò)程中很頻繁。
3、事務(wù)日志的常見(jiàn)故障
一般情況下,在能夠容納兩次事務(wù)日志截?cái)嘀g發(fā)生的最大數(shù)量的事務(wù)時(shí),事務(wù)日志的大小是穩(wěn)定的,事務(wù)日志截?cái)嘤蓹z查點(diǎn)或者事務(wù)日志備份觸發(fā)。
然而,在某些情況下,事務(wù)日志可能會(huì)變得非常大,以致用盡空間或變滿。通常,在事務(wù)日志文件占盡可用磁盤(pán)空間且不能再擴(kuò)展時(shí),您將收到如下錯(cuò)誤消息:
Error:9002, Severity:17, State:2
The log file for database ’%.*ls’ is full.
除了出現(xiàn)此錯(cuò)誤消息之外,SQL Server 還可能因?yàn)槿鄙偈聞?wù)日志擴(kuò)展空間而將數(shù)據(jù)庫(kù)標(biāo)記為 SUSPECT。有關(guān)如何從此情形中恢復(fù)的其他信息,請(qǐng)參見(jiàn) SQL Server 聯(lián)機(jī)幫助中的“磁盤(pán)空間不足”主題。
來(lái)源:巨靈鳥(niǎo) 歡迎分享本文
上一個(gè)文章:了解SQL數(shù)據(jù)庫(kù)
下一個(gè)文章:備份和恢復(fù)數(shù)據(jù)庫(kù)