【正文】
buted DBMS University of Shanghai for Science and Technology Page 15 進程協(xié)作 ?進程 系統(tǒng)中可以并行執(zhí)行的一段操作序列,分布式事務中的子事務序列是進程方式完成 ?過程 不可并行執(zhí)行的操作序列 Distributed DBMS University of Shanghai for Science and Technology Page 16 ?事務代理 ( Agent) 應用在各個 Site上執(zhí)行的若干進程,稱作應用在該 Site上的代理。 ?根代理所在的 Site稱作原發(fā) Site。 事務代理 Distributed DBMS University of Shanghai for Science and Technology Page 17 轉(zhuǎn)賬應用 事務在兩個賬戶之間執(zhí)行“基金匯兌”操作。 Distributed DBMS University of Shanghai for Science and Technology Page 18 全局級轉(zhuǎn)帳事務 FUND_TRANSFER: read (terminal,$AMOUNT,$FROM_ACC,$TO_ACC)。 select AMOUNT into $FROM_AMOUNT from ACCOUNT where ACCOUNT_NUMBER=$FROM_ACC。 update ACCOUNT set AMOUNT = AMOUNT+$AMOUNT where ACCOUNT_NUMBER = $TO_ACC。 read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC)。 select AMOUNT into $FROM_AMOUNT from ACCOUNT where ACCOUNT_NUMBER=$FROM_ACC。 create AGENT。 mit/*這里省略了等待消息和判別 */ end AGENT。 update ACCOUNT set AMOUNT=AMOUNT+$AMOUNT where ACCOUNT=$TO_ACC。 設置檢查點 Distributed DBMS University of Shanghai for Science and Technology Page 28 故障類型 續(xù) ?介質(zhì)故障 輔助存儲器介質(zhì)遭破壞 ?數(shù)據(jù)丟失 , 日志無損失 從某個 Dump狀態(tài)開始執(zhí)行已提交事務 ?數(shù)據(jù)與日志都丟失 不可能完全恢復 ?通訊故障 前三種統(tǒng)稱為站點故障 . Distributed DBMS University of Shanghai for Science and Technology Page 29 通訊故障 ? 通訊發(fā)生 , 既有某個報文 Message從 Site x 發(fā)往 Site y, 正常情況 : (a) 在 Dmax 之后 , x 站點收到 y發(fā)回的應答信息 (Ack) (b) y收到的 Message是一個合適的次序 (c ) Message本身的信息是正確的 但是當某個 Dmax之后 , x還沒收到 y的 Ack, 則可能發(fā)生 : (a) Message 或 Ack 信息丟失 (b) 網(wǎng)絡分割 , 及網(wǎng)絡不通 Site x Site y message Ack Distributed DBMS University of Shanghai for Science and Technology Page 30 通訊故障 續(xù) 問題可以進一步分為 : a) 是否是所在 Site故障 , 還是系統(tǒng)慢下來了 ? b) 若是故障 , 是通訊故障 , 還是 y 站點故障 ? c) Message 是否已到達 y 站點 ? 對上述故障 , 其恢復程序可以有不同級別 : 一級 : 僅處理 Site故障 二級 : Site故障及 Message故障 三級 : Site故障及 Message故障 , 還包括網(wǎng)絡分割 Site Site Site Site Site Site Site Distributed DBMS University of Shanghai for Science and Technology Page 31 恢復算法 ? 恢復算法是保證系統(tǒng)故障后數(shù)據(jù)庫仍保持一致性,以及保證事務原子性和持久性的技術(shù) ? 恢復算法有兩部分組成 ?在事務正常執(zhí)行時,記錄下足夠的能使系統(tǒng)恢復的信息 ?在故障發(fā)生時,恢復數(shù)據(jù)庫到一致性、原子性和持久性狀態(tài) Distributed DBMS University of Shanghai for Science and Technology Page 32 事務日志 ? 日志 ?Log 記錄所有對 DB的操作 ?事務標識 每個事務給定一個具有惟一性的標識符 ?Log記錄項 : [開始 , T], [提交 , T], [夭折 , T], [讀 , T, x], [寫 , T, x, 舊值 , 新值 ] ?DB寫動作 Log優(yōu)先 ?Log存儲 一般存在盤上 , 事務提交時 , Log Buffer強迫寫 Distributed DBMS University of Shanghai for Science and Technology Page 33 Log舉例 Log Write Output T0 start T0, A, 1000, 950 To, B, 2022, 2050 A = 950 B = 2050 T0 mit BB, BA T1 start T1, C, 700, 600 C = 600 T1 mit BC 注