事務指的是邏輯上的一組操作,這組操作要麼全部成功,要麼全部失敗。一般的事務指的都是資料庫事務,但是廣義事務的定義不侷限於資料庫事務。
事務有4大特性,即 acid。
acid,指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(durability)。乙個支援事務(transaction)的資料庫,必需要具有這四種特性,否則在事務過程(transaction processing)當中無法保證資料的正確性,交易過程極可能達不到交易方的要求。
事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。
事務前後資料的完整性必須保證一致比如還是剛剛a給b轉賬的例子,那麼a給b轉賬結束後,總金額不變。
多個使用者併發訪問資料庫時,乙個使用者的事務不能被其他使用者的事務所干擾,多個併發事務之間資料要互相隔離。隔離性非常重要,如果不考慮隔離性,就可能發生:髒讀、不可重複讀、幻讀的問題
(1)髒讀
乙個事務讀取了另乙個事務改寫但還未提交的資料,如果這些資料被回滾,則讀到的資料無效。
(2)不可重複讀
在同一事務中,多次讀取同一資料返回的結果不同。
(3)幻讀
乙個事務讀取了幾行記錄後,另乙個事務插入一些記錄。後來的查詢中,第乙個事務就會發現有些原來沒有的記錄。
當然,這些問題是有辦法避免的,有隔離級別來限制,後面做解釋。
乙個事務一旦提交,它對資料庫中的資料的改變就是永久性的,即使資料庫發生故障也不應該對其有任何影響
事務的隔離級別是為了防止髒讀、不可重複讀、幻讀問題的發生,具體分成四種,如下:
spring有乙個default隔離級別,底層資料庫用的哪個隔離級別,spring就用什麼隔離級別
mysql用的是repeatable_read
oracle用的是read_committed
有乙個更加直觀的**如下:
資料庫事務
事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...
資料庫 事務
資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...
資料庫事務
這段時間面試,由於基礎不是特別好,遇到一些要筆試的公司。就會表示出來 今天有人問我,資料庫事務 是什麼。我只感覺十分熟悉。但是又說不出所以然。回來找了一下,現在整理記錄 1 定義 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務...