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