5.可串行性
定義 當(dāng)且僅當(dāng)某組事務(wù)的一定交叉調(diào)度產(chǎn)生的結(jié)果和這些事務(wù)的某一串行調(diào)度的結(jié)果相同,則這個交叉調(diào)度是可串行化的?纱行(Serializability)是并行事務(wù)正確性的準(zhǔn)則。這個準(zhǔn)則規(guī)定,一給定的交叉調(diào)度,當(dāng)且僅當(dāng)它是可串行化的,才認(rèn)為是正確的。
6.兩段鎖協(xié)議
兩段鎖協(xié)議規(guī)定所有的事務(wù)應(yīng)遵守下列規(guī)則:
(1)在對任何數(shù)據(jù)進(jìn)行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖,而且:
(2)在釋放一個封鎖之后,事務(wù)不再獲得任何其它鎖。所謂“兩段”鎖的含義是:事務(wù)分為兩個階段。第一階段是獲得封鎖,也稱為擴(kuò)展階段。第二階段是釋放封鎖,也稱為收縮階段。定理 若所有事務(wù)均遵守兩段鎖協(xié)議,則這些事務(wù)的所有交叉調(diào)度都是可串行化的(證明略)。為了確保事務(wù)并行執(zhí)行的正確性,許多系統(tǒng)采用兩段鎖協(xié)議。同時系統(tǒng)設(shè)有死鎖檢測機(jī)制,發(fā)現(xiàn)死鎖后按一定的算法解除死鎖。
7.恢復(fù)
盡管系統(tǒng)中采取了各種保護(hù)措施來保證數(shù)據(jù)庫的安全性和完整性不被破壞,保證并行事務(wù)的正確執(zhí)行,但是計算機(jī)系統(tǒng)中硬件的故障、軟件的錯誤、操作員的失誤以及故意的破壞仍是不可避免的。這些故障輕則造成運行事務(wù)非正常地中斷,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分?jǐn)?shù)據(jù)丟失。因此數(shù)據(jù)庫管理系統(tǒng)必須具有把數(shù)擾庫從錯誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為完整狀態(tài)或一致狀態(tài))的功能,這就是數(shù)據(jù)庫的恢復(fù);謴(fù)子系統(tǒng)是數(shù)據(jù)庫管理系統(tǒng)的一個重要組成部分,而且還相當(dāng)龐大,常常占整個系統(tǒng)代碼的10%以上(如IMS,DB2)。故障恢復(fù)是否考慮周到和行之有效,是數(shù)據(jù)庫系統(tǒng)性能的一個重要指標(biāo)。大型的數(shù)據(jù)庫應(yīng)用對故障恢復(fù)的要求更加強(qiáng)烈。有時甚至采用雙工制。
(1)故障的種類數(shù)據(jù)庫系統(tǒng)中可能發(fā)生各種各樣的故障,大致可以分以下幾類:①事務(wù)內(nèi)部的故障;②系統(tǒng)范圍內(nèi)的故障;③介質(zhì)故障;④計算機(jī)病毒。
(2)轉(zhuǎn)儲和恢復(fù)轉(zhuǎn)儲是數(shù)據(jù)庫恢復(fù)中經(jīng)常采用的基本技術(shù)。所謂轉(zhuǎn)儲即DBA定期地將整個數(shù)據(jù)庫復(fù)制到磁帶或另一個磁盤上保存起來的過程。這些備用的數(shù)據(jù)文本為后備副本或后援副本。當(dāng)數(shù)據(jù)庫遭到破壞后就可以利用后備副本把數(shù)據(jù)庫恢復(fù)。這時,數(shù)據(jù)庫只能恢復(fù)到轉(zhuǎn)儲時的狀態(tài),從那以后的所有更新事務(wù)必須重新運行才能恢復(fù)到現(xiàn)時的正常狀態(tài)。轉(zhuǎn)儲是十分耗費時間和資源的,不能頻繁進(jìn)行。DBA應(yīng)該根據(jù)數(shù)據(jù)庫使用情況確定一個適當(dāng)?shù)霓D(zhuǎn)儲周期。轉(zhuǎn)儲可分為靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。靜態(tài)轉(zhuǎn)儲是指轉(zhuǎn)儲期間不允許(或不存在)對數(shù)據(jù)庫進(jìn)行任何存取、修改活動。動態(tài)轉(zhuǎn)儲是指轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進(jìn)行存取或修改。即轉(zhuǎn)儲和用戶事務(wù)可以并發(fā)執(zhí)行。靜態(tài)轉(zhuǎn)儲簡單,但轉(zhuǎn)儲必須等待用戶事務(wù)結(jié)束才能進(jìn)行。同樣,新的事務(wù)必須等待轉(zhuǎn)儲結(jié)束才能執(zhí)行。顯然,這會降低數(shù)據(jù)庫的可用性。動態(tài)轉(zhuǎn)儲可克服靜態(tài)轉(zhuǎn)儲的缺點。但是,轉(zhuǎn)儲結(jié)束時后援副本上的數(shù)據(jù)并不能保證正確有效。例如,在轉(zhuǎn)儲期間的某時刻t 1 系統(tǒng)把數(shù)據(jù)A=100轉(zhuǎn)儲到了磁帶上,而在時刻t 2 ,某一事務(wù)對A進(jìn)行了修改使A=200轉(zhuǎn)儲結(jié)束,后援副本上的A已是過時的數(shù)據(jù)了。為此,必須把轉(zhuǎn)儲期間事務(wù)對數(shù)據(jù)庫的修改活動登記下來,建立日志文件(log file)。這樣,后援副本加上日志文件就能把數(shù)據(jù)庫恢復(fù)到某一時刻的正確狀態(tài)。轉(zhuǎn)儲還可以分為海量轉(zhuǎn)儲和增量轉(zhuǎn)儲。海量轉(zhuǎn)儲是指每次轉(zhuǎn)儲全部數(shù)據(jù)庫。增量轉(zhuǎn)儲則指每次只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù)。如果數(shù)據(jù)庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲方式是很有效的。(3)日志文件日志文件是用來記錄對數(shù)據(jù)庫每一次更新活動的文件。在動態(tài)轉(zhuǎn)儲方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復(fù)數(shù)據(jù)庫。在靜態(tài)轉(zhuǎn)儲方式中,也可以建立日志文件。當(dāng)數(shù)據(jù)庫毀壞后可重新裝放后援副本把數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲結(jié)束時刻的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進(jìn)行重做處理,對故障發(fā)生時尚未完成的事務(wù)進(jìn)行撤消處理。這樣不必重新運行那些在轉(zhuǎn)儲前已完成的事務(wù)程序就可把數(shù)據(jù)庫恢復(fù)到故障前某一時刻的正確狀態(tài)。
相關(guān)推薦: 軟考數(shù)據(jù)庫系統(tǒng)師歷年真題匯總(2007年-2010年)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |