數(shù)據(jù)庫事物.docx_第1頁
數(shù)據(jù)庫事物.docx_第2頁
數(shù)據(jù)庫事物.docx_第3頁
數(shù)據(jù)庫事物.docx_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫事務數(shù)據(jù)庫事務(Database Transaction) ,是指作為單個邏輯工作單元執(zhí)行的一系列操作。 事務處理可以確保除非事務性單元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)的資源。通過將一組相關操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復并使應用程序更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。目錄操作流程 數(shù)據(jù)庫事務的ACID屬性 1. 原子性 2. 一致性 3. 隔離性 4. 持久性 DBMS的責任 SQL 事務處理模型 展開 操作流程 數(shù)據(jù)庫事務的ACID屬性 1. 原子性 2. 一致性 3. 隔離性 4. 持久性 DBMS的責任 SQL 事務處理模型 展開 操作流程設想網(wǎng)上購物的一次交易,其付款過程至少包括以下幾步數(shù)據(jù)庫操作: 更新客戶所購商品的庫存信息 保存客戶付款信息-可能包括與銀行系統(tǒng)的交互 生成訂單并且保存到數(shù)據(jù)庫中 更新用戶相關信息,例如購物數(shù)量等等 正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有數(shù)據(jù)庫信息也成功地更新。但是,如果在這一系列過程中任何一個環(huán)節(jié)出了差錯,例如在更新商品庫存信息時發(fā)生異常、該顧客銀行帳戶存款不足等,都將導致交易失敗。一旦交易失敗,數(shù)據(jù)庫中所有信息都必須保持交易前的狀態(tài)不變,比如最后一步更新用戶信息時失敗而導致交易失敗,那么必須保證這筆失敗的交易不影響數(shù)據(jù)庫的狀態(tài)-庫存信息沒有被更新、用戶也沒有付款,訂單也沒有生成。否則,數(shù)據(jù)庫的信息將會一片混亂而不可預測。 數(shù)據(jù)庫事務正是用來保證這種情況下交易的平穩(wěn)性和可預測性的技術。 數(shù)據(jù)庫事務的ACID屬性原子性(atomic)(atomicity) 事務必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。通常,與某個事務關聯(lián)的操作具有共同的目標,并且是相互依賴的。如果系統(tǒng)只執(zhí)行這些操作的一個子集,則可能會破壞事務的總體目標。原子性消除了系統(tǒng)處理操作子集的可能性。 一致性(consistent)(consistency) 事務在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關數(shù)據(jù)庫中,所有規(guī)則都必須應用于事務的修改,以保持所有數(shù)據(jù)的完整性。事務結束時,所有的內(nèi)部數(shù)據(jù)結構(如 B 樹索引或雙向鏈表)都必須是正確的。某些維護一致性的責任由應用程序開發(fā)人員承擔,他們必須確保應用程序已強制所有已知的完整性約束。例如,當開發(fā)用于轉帳的應用程序時,應避免在轉帳過程中任意移動小數(shù)點。 隔離性(insulation)(isolation) 由并發(fā)事務所作的修改必須與任何其它并發(fā)事務所作的修改隔離。事務查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務修改它之前的狀態(tài),要么是另一事務修改它之后的狀態(tài),事務不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因為它能夠重新裝載起始數(shù)據(jù),并且重播一系列事務,以使數(shù)據(jù)結束時的狀態(tài)與原始事務執(zhí)行的狀態(tài)相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可并行執(zhí)行的事務獲得的結果與通過連續(xù)運行每個事務所獲得的結果相同。由于高度隔離會限制可并行執(zhí)行的事務數(shù),所以一些應用程序降低隔離級別以換取更大的吞吐量。防止數(shù)據(jù)丟失 持久性(Duration)(durability) 事務完成之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)致命的系統(tǒng)故障也將一直保持。 DBMS的責任企業(yè)級的數(shù)據(jù)庫管理系統(tǒng)(DBMS)都有責任提供一種保證事務的物理完整性的機制。就常用的SQL Server2000系統(tǒng)而言,它具備鎖定設備隔離事務、記錄設備保證事務持久性等機制。因此,我們不必關心數(shù)據(jù)庫事務的物理完整性,而應該關注在什么情況下使用數(shù)據(jù)庫事務、事務對性能的影響,如何使用事務等等。 本文將涉及到在.net框架下使用C#語言操縱數(shù)據(jù)庫事務的各個方面。 體驗SQL語言的事務機制 作為大型的企業(yè)級數(shù)據(jù)庫,SQL Server2000對事務提供了很好的支持。我們可以使用SQL語句來定義、提交以及回滾一個事務。 如下所示的SQL代碼定義了一個事務,并且命名為MyTransaction(限于篇幅,本文并不討論如何編寫SQL語言程序,請讀者自行參考相關書籍): SQL 事務處理模型事務有三種模型: 1隱式事務是指每一條數(shù)據(jù)操作語句都自動地成為一個事務,每個事務都有顯式的開始和結束標記。 2顯式事務是指有顯式的開始和結束標記的事務,事務的開始是隱式的,事務的結束有明確的標記。 3自動事務是系統(tǒng)自動默認的,開始和結束不用標記。 并發(fā)控制 1 數(shù)據(jù)庫系統(tǒng)一個明顯的特點是多個用戶共享數(shù)據(jù)庫資源,尤其是多個用戶可以同時存取相同數(shù)據(jù)。 串行控制:如果事務是順序執(zhí)行的,即一個事務完成之后,再開始另一個事務 并行控制:如果DBMS可以同時接受多個事務,并且這些事務在時間上可以重疊執(zhí)行。 2并發(fā)控制概述 事務是并發(fā)控制的基本單位,保證事務ACID的特性是事務處理的重要任務,而并發(fā)操作有可能會破壞其ACID特性。 DBMS并發(fā)控制機制的責任: 對并發(fā)操作進行正確調度,保證事務的隔離性更一般,確保數(shù)據(jù)庫的一致性。 如果沒有鎖定且多個用戶同時訪問一個數(shù)據(jù)庫,則當他們的事務同時使用相同的數(shù)據(jù)時可能會發(fā)生問題。由于并發(fā)操作帶來的數(shù)據(jù)不一致性包括:丟失數(shù)據(jù)修改、讀”臟”數(shù)據(jù)(臟讀)、不可重復讀、產(chǎn)生幽靈數(shù)據(jù)。 (1)丟失數(shù)據(jù)修改 當兩個或多個事務選擇同一行,然后基于最初選定的值更新該行時,會發(fā)生丟失更新問題。每個事務都不知道其它事務的存在。最后的更新將重寫由其它事務所做的更新,這將導致數(shù)據(jù)丟失。如上例。 再例如,兩個編輯人員制作了同一文檔的電子復本。每個編輯人員獨立地更改其復本,然后保存更改后的復本,這樣就覆蓋了原始文檔。最后保存其更改復本的編輯人員覆蓋了第一個編輯人員所做的更改。如果在第一個編輯人員完成之后第二個編輯人員才能進行更改,則可以避免該問題。 (2)讀“臟”數(shù)據(jù)(臟讀) 讀“臟”數(shù)據(jù)是指事務T1修改某一數(shù)據(jù),并將其寫回磁盤,事務T2讀取同一數(shù)據(jù)后,T1由于某種原因被除撤消,而此時T1把已修改過的數(shù)據(jù)又恢復原值,T2讀到的數(shù)據(jù)與數(shù)據(jù)庫的數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)。 例如:一個編輯人員正在更改電子文檔。在更改過程中,另一個編輯人員復制了該文檔(該復本包含到目前為止所做的全部更改)并將其分發(fā)給預期的用戶。此后,第一個編輯人員認為目前所做的更改是錯誤的,于是刪除了所做的編輯并保存了文檔。分發(fā)給用戶的文檔包含不再存在的編輯內(nèi)容,并且這些編輯內(nèi)容應認為從未存在過。如果在第一個編輯人員確定最終更改前任何人都不能讀取更改的文檔,則可以避免該問題。 ( 3)不可重復讀 指事務T1讀取數(shù)據(jù)后,事務T2執(zhí)行更新操作,使T1無法讀取前一次結果。不可重復讀包括三種情況: 事務T1讀取某一數(shù)據(jù)后,T2對其做

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論