事務特性及髒讀、不可重複讀、幻讀(虛讀)

事務是指邏輯上的一組操作,這組操作要麼全部成功,要麼全部失敗。

事務的特性(ACID):

原子性(A):事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。

一致性(C):事務前後數據的完整性必須保持一致。例:A:200,B:200,A、B之間無論怎麼交換,最終都要保證和是400。

隔離性(I):多個用戶併發訪問數據庫時,一個用戶的事務不能被其他用戶的事務所幹擾,多個併發事務之間數據要相互隔離。如果不考慮隔離性,會引發安全問題如下:髒讀不可重複讀幻讀(虛讀)。

髒讀:一個事務讀取了另一個事務改寫但還未提交的數據,如果這些數據被回滾,則讀到的數據是無效的。

不可重複讀:在同一事務中,多次讀取同一數據返回的結果有所不同,讀到了之前的數據後又讀到了其他事務已經提交的更新的數據。

幻讀(虛讀):一個事務讀取了幾行記錄後,另一個事務插入(insert)一些記錄幻讀就發生了。再後來的查詢中,第一個事務就會發現有些原來沒有的記錄。

因此需要設置事務隔離級別(四種)。


如果隔離級別設置成DEFAULT,那麼底層數據庫用什麼,DEFAULT就表示什麼隔離級別。

Mysql默認採用REPEATABLE_READ隔離級別。

Oracle默認採用READ_COMMITTED隔離級別。

持久性(D):一個事務一旦被提交,他對數據庫中數據的改變是永久性的,即使數據庫發生故障也不應該對其有影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章