在數(shù)據(jù)庫系統(tǒng)中,“事務(wù)”是訪問數(shù)據(jù)庫并可能更新各種數(shù)據(jù)項的一個程序執(zhí)行單元。為了保證數(shù)據(jù)完整性,要求數(shù)據(jù)庫系統(tǒng)維護事務(wù)的原子性、一致性、隔離性和持久性。針對事務(wù)的這4種特性,考慮以下的架構(gòu)設(shè)計場景:
假設(shè)在某一個時刻只有一個活動的事務(wù),為了保證事務(wù)的原子性,對于要執(zhí)行寫操作的數(shù)據(jù)項,數(shù)據(jù)庫系統(tǒng)在磁盤上維護數(shù)據(jù)庫的一個副本,所有的寫操作都在數(shù)據(jù)庫副本上執(zhí)行,而保持原始數(shù)據(jù)庫不變,如果在任一時刻操作不得不中止,系統(tǒng)僅需要刪除副本,原數(shù)據(jù)庫沒有受到任何影響。這種設(shè)計策略稱為(1)。
事務(wù)的一致性要求在沒有其它事務(wù)并發(fā)執(zhí)行的情況下,事務(wù)的執(zhí)行應(yīng)該保證數(shù)據(jù)庫的一致性。數(shù)據(jù)庫系統(tǒng)通常采用(2)機制保證單個事務(wù)的一致性。
事務(wù)的隔離性保證操作并發(fā)執(zhí)行后的系統(tǒng)狀態(tài)與這些操作以某種次序順序執(zhí)行(即可串行化執(zhí)行)后的狀態(tài)是等價的。兩階段鎖協(xié)議是實現(xiàn)隔離性的常見方案,該協(xié)議(3)。
持久性保證一旦事務(wù)完成,該事務(wù)對數(shù)據(jù)庫所做的所有更新都是永久的,如果事務(wù)完成后系統(tǒng)出現(xiàn)故障,則需要通過恢復(fù)機制保證事務(wù)的持久性。假設(shè)在日志中記錄所有對數(shù)據(jù)庫的修改操作,將一個事務(wù)的所有寫操作延遲到事務(wù)提交后才執(zhí)行,則在日志中(4),當系統(tǒng)發(fā)生故障時,如果某個事務(wù)已經(jīng)開始,但沒有提交,則該事務(wù)應(yīng)該(5)。
(1)A. 主動冗余
B. 影子拷貝
C. 熱備份
D. 多版本編程
(2)A. 邏輯正確性檢查
B. 物理正確性檢查
C. 完整性約束檢查
D. 唯一性檢查
(3)A. 能夠保證事務(wù)的可串行化執(zhí)行,可能發(fā)生死鎖
B. 不能保證事務(wù)的可串行化執(zhí)行,不會發(fā)生死鎖
C. 不能保證事務(wù)的可串行化執(zhí)行,可能發(fā)生死鎖
D. 能夠保證事務(wù)的可串行化執(zhí)行,不會發(fā)生死鎖
(4)A. 無需記錄“事務(wù)開始執(zhí)行”這一事件
B. 無需記錄“事務(wù)已經(jīng)提交”這一事件
C. 無需記錄數(shù)據(jù)項被事務(wù)修改后的新值
D. 無需記錄數(shù)據(jù)項被事務(wù)修改前的原始值
(5)A. 重做
B. 撤銷
C. 什么都不做
D. 拋出異常后退出