-
數據庫事務
鎖定
- 中文名
- 數據庫事務
- 外文名
- (Database Transaction)
- 實 質
- 一系列操作
- 要 求
- 必須滿足所謂的ACID屬性
數據庫事務簡介
在數據庫系統中,事務是工作的離散單位,它可以是修改一個用户的賬户餘額,也可以是庫存項的寫操作。在單用户、單數據庫環境下執行事務比較簡單,但在分佈式環境下,維護多個數據庫的完整性就比較複雜。大多數聯機事務處理系統是在大型計算機上實現的,這是由於它的操作複雜,需要快速的輸入/輸出和完善的管理。如果一個事務在多個場地進行修改,那就需要管理機制來防止數據重寫並提供同步。另外還需要具有返回失效事務的能力,提供安全保障和提供數據恢復能力。
[2]
在這個過程中,兩個環節是關聯的。第一個賬户劃出款項必須保證正確的存入第二個賬户,如果第二個環節沒有完成,整個的過程都應該取消,否則就會發生丟失款項的問題。整個交易過程,可以看作是一個事務,成功則全部成功,失敗則需要全部撤消,這樣可以避免當操作的中間環節出現問題時,產生數據不一致的問題。
[3]
數據庫事務是一個邏輯上的劃分,有的時候並不是很明顯,它可以是一個操作步驟也可以是多個操作步驟。我們可以這樣理解數據庫事務:對數據庫所做的一系列修改,在修改過程中,暫時不寫入數據庫,而是緩存起來,用户在自己的終端可以預覽變化,直到全部修改完成,並經過檢查確認無誤後,一次性提交併寫入數據庫,在提交之前,必要的話所做的修改都可以取消。提交之後,就不能撤銷,提交成功後其他用户才可以通過查詢瀏覽數據的變化。
[3]
數據庫事務性質
事務的ACID特性是由關係數據庫系統(DBMS)來實現的,DBMS採用日誌來保證事務的原子性、一致性和持久性。日誌記錄了事務對數據庫所作的更新,如果某個事務在執行過程中發生錯誤,就可以根據日誌撤銷事務對數據庫已做的更新,使得數據庫回滾到執行事務前的初始狀態。
對於事務的隔離性,DBMS是採用鎖機制來實現的。當多個事務同時更新數據庫中相同的數據時,只允許持有鎖的事務能更新該數據,其他事務必須等待,直到前一個事務釋放了鎖,其他事務才有機會更新該數據。
數據庫事務作用
當事務被提交給了DBMS(數據庫管理系統),則DBMS(數據庫管理系統)需要確保該事務中的所有操作都成功完成且其結果被永久保存在數據庫中,如果事務中有的操作沒有成功完成,則事務中的所有操作都需要被回滾,回到事務執行前的狀態;同時,該事務對數據庫或者其他事務的執行無影響,所有的事務都好像在獨立的運行。
[4]
但在現實情況下,失敗的風險很高。在一個數據庫事務的執行過程中,有可能會遇上事務操作失敗、數據庫系統/操作系統失敗,甚至是存儲介質失敗等情況。這便需要DBMS對一個執行失敗的事務執行恢復操作,將其數據庫狀態恢復到一致狀態(數據的一致性得到保證的狀態)。為了實現將數據庫狀態恢復到一致狀態的功能,DBMS通常需要維護事務日誌以追蹤事務中所有影響數據庫數據的操作。
[4]
數據庫事務數據庫事務模型
數據庫事務顯式事務
數據庫事務隱式事務
隱式事務是指每一條數據操作語句都自動地成為一個事務,事務的開始是隱式的,事務的結束有明確的標記。即當用户進行數據操作時,系統自動開啓一個事務,事務的結束則需手動調用 commit或 rollback語句來結束當前事務,在當前事務結束後又自動開啓一個新事務。
[5]
數據庫事務自動事務
數據庫事務優點
- 參考資料
-
- 1. 青島英谷教育科技股份有限公司編著.輕量級JAVA EE程序設計及實踐:西安電子科技大學出版社,2015.08:第180頁
- 2. 餘綺芬 王守平 沈宗惠.英漢計算機網絡與通信術語淺解:人民郵電出版社,2000年03月第1版:第57頁
- 3. 高繼民主編.Oracle數據庫SQL和PL/SQL實例教程:西安電子科技大學出版社,2004年06月第1版:第70頁
- 4. Jim Gray, Andreas Reuter 著,孟小峯、於戈 等譯. 《事務處理:概念與技術》(Transaction Prossessing: Concepts and Techniques). 機械工業出版社. 2004年. ISBN 9787111126416.
- 5. 温立輝主編.數據庫高級應用技術:北京理工大學出版社,2016.08:第19頁