- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
T2-德明财经科技大学!.ppt
Chapter 16交易 Transaction;;現今社會的交易都改成買賣關係,也就是以金錢來換取貨物
在交易的過程當,『一手交錢,一手交貨』,已經道出了『交易』的意義
兩者的交付關係缺一不可,否則就不能稱為一個完整的交易
[狀況一]
A君在時間t1將購買貨物之費用先行交付給B君
B君於時間t2點收到,並隔一段時間後,於時間點t3將貨品交付給A君
完成整個交易動作
[狀況二]
A君已將金錢付於B君
B君因為某種原因下,無法順利將貨品交付,付出金錢的A君,勢必要將金錢取回
不能成功完成的交易,回復到交易開始之前的最原始狀態,也就是彼此互不交付任何東西的狀況;交錢;支付現金;由ATM提款的工作程序
輸入密碼、提領金額
傳遞資訊至伺服器端 (網路傳遞資訊)
動作:提領、金額:3000元
帳戶餘額 =帳戶餘額 – 3000 (伺服器端計算)
錯誤檢查:例如餘額是否足夠
傳遞資訊至ATM端 (網路傳遞資訊)
吐出金額:3000元
ATM將錢放至出鈔口
列印明細表
Q: 請問哪邊可能出錯?出錯後怎麼辦?;現實的交易觀念都是透過人的交易行為
如果是透過電腦系統的交易,可能會因為突發事件而導致交易的中斷,造成資料的不正確性,那又該如何處理呢?
例如某君要將A帳戶轉出3,000元至B帳戶
由A帳戶先行扣除3,000元後,再將金額轉入B帳戶
如果在A帳戶完成扣款動作當下,突然停電,導致B帳戶無法正確地入帳
該君是否就白白損失該筆金額呢?
或是在電力恢復正常之後,將前半段完成的動作取消,並還原到使用者尚未轉帳前的狀況?;A 帳戶扣款;單元性(Atomicity)
不論其中包括多少個,或多少種不同操作的一個交易,應該都被視為一個最小的處理單位,且不可再被切割
當一個交易開始處理之後,應該要完整且正確地執行完成,否則就應該將其所有操作取消,還原到最原始未開始處理前的情形
一致性的保留(Consistency Preservation)
在交易進行前,資料庫內的資料狀態彼此應該是一致性
在交易進行後,資料庫內的資料狀態應該也要保留此一致性,不應該在交易後破壞資料的一致性
獨立性(Isolation)
永久性(Durability or Permanency);單元性(Atomicity)
一致性的保留(Consistency Preservation)
獨立性(Isolation)
無論電腦系統是如何執行,對於任何一個交易而言,在進行時,每一個交易應該具有獨立性,也就是交易進行中,彼此不應該影響執行的結果
永久性(Durability or Permanency)
當一個交易進行完成也被確認(committed)之後,所有資料項目應該永久地被記錄在資料庫中
不應該隨著時間或任何狀況導致其資料改變
除非下一次的交易進行改變;交易執行時可能的錯誤;Read(X)或是簡單表示成r(X)
從資料庫中讀取一個資料項目X,存入相同的區域變數(Local Variable)名稱為X
Write(X)或是簡單表示成w(X)
將區域變數(Local Variable)名稱為X,寫入資料庫的資料項目X
此操作有可能是新增、刪除或修改等其中之一;一個交易皆可包括多個Read及Write的不同存取操作在其中
每一個『交易』(Transaction)的表示方式皆會以Ti來表示之,下標i代表不同交易的編號;時間;;;;;;使用Lock的機制解決並行運作可能的錯誤
也是作業系統常用的技巧
類型
『獨佔模式』
『二元鎖定』 (Binary Locks)
『分享模式』
『共享/互斥鎖定』(Shared/Exclusive Locks)
或稱為『讀/寫鎖定』(Read/Write Locks);二元鎖定(Binary Locks)的狀態情形只會有兩種
『鎖定』
『非鎖定』
任何一個資料項目X,皆會結合一個,也僅會結合一個鎖定狀態值
二元鎖定的操作中,主要可分為兩種操作
如果要將資料項目X鎖定,則使用lock(X)將資料項目X的鎖定狀態設為『鎖定』狀態
如果要將資料項目X由鎖定狀態轉為『非鎖定』狀態,則使用unlock(X)來解除鎖定,也就是將資料項目X釋放出給其他交易鎖定後使用;;任何一個交易T中,在對資料項目X執行讀取Read(X)操作或寫入Write(X)操作之前,必須先執行鎖定操作lock(X)
任何一個交易T中,在對資料項目X完成所有的讀取Read(X)操作和寫入Write(X)操作之後,必須要執行解除鎖定指令unlock(X)
如果一個交易T已經對資料項目X鎖定,則不可再執行一次的鎖定操作lock(X),也就是不可以對同個資料項目執行兩次或兩次以上的鎖定
除非交易T已經對資料項目X鎖定,否則不可以執行解鎖操作unlock(X);優點
在實作上很容易達成,只需要兩種基本指令
文档评论(0)