每個java開發對數據庫都不會陌生,提到數據庫,那麼就必定要了解的一個知識點------事物,下面就對事物簡單記錄一下相關知識點。html
最初接觸事物的時候實際上是從JDBC事物開始的,JDBC比較基礎,這裏不作太多解釋(網上一大堆)。java
- 原子性:顧名思義,原子是目前科學技術上不可再分的最小單位,事物的原子性是指一個事物是一個總體,要麼所有成功,要麼所有失敗。
- 一致性:事物的一致性官方的解釋:事物必須是數據庫從一個一致性狀態到另外一個一致性狀態,這個理解起來有些複雜,其實一致性就是數據庫中的數據操做要保證數據的一致,不能憑空增減。
- 隔離性:這個比較好理解,就是不一樣的事物之間不能彼此干擾。
- 持久性:事物的持久性就是事物一旦提交,那麼這個事物對數據庫的操做是永久性的。
說明:在多線程的程序下,多線程各自開啓了本身的事物進行數據庫操做時,數據庫要保證隔離操做,以保證各個線程獲取數據時的準確性。sql
- 若是不考慮事物的一致性會引發哪些後果呢
- 髒讀:即一個事物讀取了另外一個事物未提交的數據
- 不可重複讀:即一個事物先後讀取數據庫獲得的數據不一致
- 虛讀:即在一個事物內讀到了另外一個事物將要插入的數據,致使先後讀取不一致
- Mysql四種隔離級別
- Serializable(串行化):可避免髒讀、不可重複讀、虛讀
- Repeatable read(可重複讀):可避免髒讀、不可重複讀
- Read committed(讀已提交):只可避免髒讀
- Read umcommitted(讀未提交):最低級別,不可避免任何狀況
以上是學習事物的隨筆,但願各位大大多多指正,謝謝!數據庫
參考:大神孤傲蒼狼博客:https://www.cnblogs.com/xdp-gacl/p/3984001.html多線程