您好,登錄后才能下訂單哦!
本篇內容介紹了“數據庫事務的特性是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
數據庫四大特性,就必須知道什么是事務。所謂事務,它是一個操作序列,這些操作要么都執行,要么都不執行,它是一個不可分割的工作單位。例如,銀行轉帳工作中:將一個帳戶扣款轉向另一個帳號中,這兩個操作要么都執行,要么都不執行。
1).原子性(Atomicity)
一個事務中的所有操作,要么全部完成,要么全部不完成,它不會結束停留在中間某個中間環節。如果事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,如同這個事務從來沒有執行過一樣。
2).一致性(Consistency)
一致性指的是在一個事務執行之前和執行之后數據庫都必須處于一致性狀態。如果事務成功地完成,那么系統中所有變化將正確地應用,系統處于有效狀態。如果在事務中出現錯誤,那么系統中的所有變化將自動地回滾,系統返回到原始狀態。
3).分離性(或者獨立性Isolation)
分離性指同時發生的事務是相互隔離的。即一個事務內部的操作及正在操作的數據必須封鎖起來,不被其它企圖進行修改的事務看到。假如并發交叉執行的事務沒有任何控制,操縱相同的共享對象的多個并發事務的執行可能引起異常情況。
4).持久性(Durability)
持久性指的是只要事務成功結束,它對數據庫的操作更新就必須永久保存下來。即使發生系統崩潰,重新啟動數據庫系統后,數據庫還能恢復到事務成功結束時的狀態。
在關系型數據庫中,事務的隔離性分為四個隔離級別,在解讀這四個級別前先了解一下幾個數據讀取的概念。
1.臟讀
臟讀是指在一個事務處理過程里讀取了另一個未提交的事務中的數據。
2.不可重復讀
不可重復讀是指一個事務先后讀取同一條記錄,但兩次讀取的數據不同,我們稱之為不可重復讀。也就是說,這個事務在兩次讀取之間該數據被其它事務所修改。
3.虛讀(幻讀)
虛讀是指一個事務按相同的查詢條件重新讀取以前檢索過的數據,卻發現其他事務插入了滿足其查詢條件的新數據,這種現象就稱為幻讀。例如事務1對一個表中所有的行的某個數據項做了從“1”修改為“2”的操作,這時事務2又對這個表中插入了一行數據項,而這個數據項的數值還是為“1”并且提交給數據庫。而操作事務1的用戶如果再查看剛剛修改的數據,會發現還有一行沒有修改,其實這行是從事務2中添加的。
現在來看看MySQL數據庫給我們提供的四種隔離級別吧:
以上四種隔離級別最高的是Serializable級別,最低的是Read uncommitted級別,當然級別越高,執行效率就越低。像Serializable這樣的級別,就是以鎖表的方式(類似于Java多線程中的鎖)使得其他的線程只能在鎖外等待,所以平時選用何種隔離級別應該根據實際情況。在MySQL數據庫中默認的隔離級別為Repeatable read (可重復讀)。
“數據庫事務的特性是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。