資料庫事物隔離等級

來源:互聯網
上載者:User

這個想必每個程式員都很早就知道了,但是我其實並沒有真正搞清楚。網路上的很多文章也沒說清楚。以下內容個人覺得還是比較好理解的:

 

交易隔離等級(transaction isolation
levels

):隔離等級就是對對事務並發控制的等級。ANSI
/

ISO
SQL
將其分為序列化(SERIALIZABLE)、可重複讀(REPEATABLE
READ)、讀已提交(READ COMMITED)、讀未提交(READ
UNCOMMITED)四個等級。為了實現隔離等級通常資料庫採用鎖(Lock)。一般在編程的時候只需要設定隔離等級,至於具體採用什麼鎖則由資料庫來設定。首先介紹四種等級,然後舉例解釋後面三個等級(可重複讀、讀已提交、讀未提交)中會出現的並發問題。

序列化(SERIALIZABLE):所有事務都一個接一個地串列執行,這樣可以避免幻讀(phantom
reads)。對於基於鎖來實現並發控制的資料庫來說,序列化要求在執行範圍查詢(如選取年齡在10到30之間的使用者)的時候,需要擷取範圍鎖(range
lock)。如果不是基於鎖實現並發控制的資料庫,則檢查到有違反串列操作的事務時,需要滾回該事務。

可重複讀(REPEATABLE
READ):所有被Select擷取的資料都不能被修改,這樣就可以避免一個事務前後讀取資料不一致的情況。但是卻沒有辦法控制幻讀,因為這個時候其他事務不能更改所選的資料,但是可以增加資料,因為前一個事務沒有範圍鎖。

讀已提交(READ
COMMITED):被讀取的資料可以被其他事務修改。這樣就可能導致不可重複讀取。也就是說,事務的讀取資料的時候擷取讀鎖,但是讀完之後立即釋放(不需要等到事務結束),而寫鎖則是事務提交之後才釋放。釋放讀鎖之後,就可能被其他事物修改資料。該等級也是SQL
Server預設的隔離等級。

讀未提交(READ UNCOMMITED):這是最低的隔離等級,允許其他事務看到沒有提交的資料。這種等級會導致髒讀(Dirty
Read)。

 

綜上述,可以等到下面的表格:

 

隔離等級

髒讀

不可重複讀取

幻讀

讀未提交

YES

YES

YES

讀已提交

NO

YES

YES

可重複讀

NO

NO

YES

序列化

NO

NO

NO

 

注:事物隔離等級是依據一個事物進行查詢(Select,可能是一次或多次)時的資料是否“正確”為依據而定義的。(理解)

補充:

1、髒讀:事物一讀到了事物二尚未提交的資料(如果事物二失敗復原的情況下,則事物一讀到的資料則是無效的,或者說垃圾)

              產生層級:讀未提交

              解決需要層級: 讀已提交

 

2、不可重複讀取:事物一在二次或多次讀取資料時,讀到了不同的資料。原因是事物二在中間修改了其中的資料。

              產生層級:讀已提交

              解決需要層級: 可重複讀

3、幻讀: 事物一修改了部分資料,事物二添加了新的並且符合事物一的條件的資料。造成事物一發現有新的資料沒有修改,稱幻覺。

              產生層級: 可重複讀

              解決需要層級:序列化

 

各大資料庫預設隔離等級:

Oracle:Read Committed

SQL Server:Read Committed

MySql:( InnoDB )  Repeatable Read

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.