1. 程式人生 > 其它 >資料庫中事務的四大特性(ACID)及事務的隔離級別

資料庫中事務的四大特性(ACID)及事務的隔離級別

一、事務的四大特性

(1)原子性(Atomicity)

  原子性是指事物包含所有操作要麼全部成功,要麼全部失敗回滾。

(2)一致性(Consistency)

  一致性是指事務必須是資料庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事物執行之前和執行之後都必須處於一致性狀態

(3)隔離性(Lsolation)

  操作同一張表時,資料庫為每一個使用者開啟的事務,不能被其他事務的操作干擾,多個併發事務之間要相互隔離

(4)永續性(Durability)

  永續性是指一個事務一旦被提交了,那麼對資料庫中的資料的改變就是永久性的。

二、事物的隔離級別

(1)第一種隔離級別:Read uncommitted(讀未提交)

  如果一個事務已經開始寫資料,則另外一個事務不允許同時進行寫操作,但允許其他事務讀此行資料。

  解決了更新丟失,但還是可能會出現髒讀

  髒讀是指在一個事務處理過程裡讀取了另一個未提交的事務中的資料。

(2)第二種隔離級別:Read committed(讀提交)

  如果是一個讀事務(執行緒),則允許其他事務讀寫,如果是寫事務將會禁止其他事務訪問該行資料,該隔離級別避免了髒讀,

  解決了髒讀 但是可能出現不可重複讀

  不可重複讀是指在對於資料庫中的某個資料,一個事務範圍內多次查詢卻返回了不同的資料值,這是由於在查詢間隔,被另一個事務修改並提交了。

(3)第三種隔離級別:Repeatable read(可重複讀取)

  可重複讀取是指在一個事務內,多次讀同一個資料,在這個事務還沒結束時,其他事務不能訪問該資料(包括了讀寫),這樣就可以在同一個事務內兩次讀到的資料是一樣的。

  解決了更新丟失、髒讀、不可重複讀、但是還會出現幻讀

  幻讀是事務非獨立執行時發生的一種現象。

(4)第四種隔離級別:Serializable(序列化)

  提供嚴格的事務隔離,它要求事務序列化執行,事務只能一個接著一個地執行,但不能併發執行,

  解決了更新丟失、髒讀、不可重複讀、幻讀(虛讀)