7801 事務簡介

2022-07-09 09:45:13 字數 1146 閱讀 5148

1、事務是什麼      

事務是應用程式中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具有原子性,乙個事務中的一系列的操作要麼全部成功,要麼乙個都不做。

2、事務的四大特性 

資料庫事務 transanction 正確執行的四個基本要素。

acid,原子性(atomicity)、一致性(correspondence)、隔離性(isolation)、永續性(durability)。

(1)原子性:整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

(2)一致性:在事務開始之前和事務結束以後,資料庫的完整性約束沒有被破壞。

(3)隔離性:隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,執行在相同的時間內,執行 相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為序列化,為了防止事務操作間的混淆,  必須序列化或序列化請 求,使得在同一時間僅有乙個請求用於同一資料。

(4)永續性:在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。

3、事務的併發問題

1、髒讀:事務a讀取了事務b更新的資料,然後b回滾操作,那麼a讀取到的資料是髒資料

2、不可重複讀:事務 a 多次讀取同一資料,事務 b 在事務a多次讀取的過程中,對資料作了更新並提交,導致事務a多次讀取同一資料時,結果 不一致。

3、幻讀:系統管理員a將資料庫中所有學生的成績從具體分數改為abcde等級,但是系統管理員b就在這個時候插入了一條具體分數的記錄,當系統管理員a改結束後發現還有一條記錄沒有改過來,就好像發生了幻覺一樣,這就叫幻讀。

小結:不可重複讀的和幻讀很容易混淆,不可重複讀側重於修改,幻讀側重於新增或刪除。解決不可重複讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表

4、mysql事務隔離級別

事務隔離級別

髒讀不可重複讀

幻讀讀未提交(read-uncommitted)是是

是不可重複讀(read-committed)否是

是可重複讀(repeatable-read)否否

是序列化(serializable)否否

EJB事務簡介

ejb事務屬性可以具有以下幾個值 required 如果執行事務中的客戶呼叫企業bean的方法,則方法執行於客戶的事務中。如果客戶沒有關聯到事務中,容器會在執行入方法之前啟動乙個新的事務。required屬性是cmt中企業bean所有的事務屬性中隱含的事務屬性。一般除非你需要過載其他的事務屬性,否則...

hibernate事務簡介

資料庫的事務如果控制不好,很容易導致資料出現髒讀,不可重複讀,幻讀,這樣就會造成資料的混亂,那怎麼弄呢?利用資料庫事務的隔離級別進行控制就可以了 hibernate隔離級別有 1 read uncommitted isolation 2 read committed isolation 4 repe...

springboot aop事務簡介

開啟 在springboot啟動類上加註解 enabletransactionmanagement 使用 在方法或者類上加註解 transactional transactional 當這個註解使用在類上意味著這個類中的所有方法都受事務控制,該註解在類上使用定義類中方法共同特性,如有特殊在方法上註解...