Mysql交易隔離等級

來源:互聯網
上載者:User

標籤:

在說Isolation之前,需要談談關係型資料庫的ACID特性。

  A(atomicity,原子性),指一個事務要麼完全完成,要麼全部復原到起始狀態,不存在中間狀態。

  C(Consistency,一致性),指在事務開始前與事務結束後,及在事務內部,資料的完整性結束不被破壞,即不存在新舊資料的混合情況。如在一個交易處理過程中,有些資料被其他事務修改,則在事務中要麼只出現舊值,要麼只出現新值,決不能是舊值混在該事務內。

   I(Isolation,隔離性),指事務在執行過程中互不干擾,也不能看到其他事務未提交的資料;這種隔離性是通過鎖機制來實現的,可以通過調整隔離等級(isolation level)來提升效能或並發性。

  D(Durability,持久性),指事務一旦完成,便不可撤消。

在談隔離等級之前,還有一點要知道:事務是原子性的,要麼完成要麼復原,所以對於事務可以很輕易地完成A,D.

對於C,I,就需要通過隔離等級來限制。

另一個常識是:隔離等級越高,ACID特性實現的越好,但資料庫的並發性越低,效率越差。

  Mysql支援四種隔離等級:

  READ UNCOMMITED(讀未提交),一個事務可以看到另一個事務未提交的資料,會出現髒資料(dirty data)

  READ COMMITTED (讀已提交),一個事務只能看到已被提交的資料,可能會出現不可重複讀取。即在同一事務內同一SELECT會出現不同結果。

  REPEATABLE READ(可重複讀),通過快照和鎖,使得事務只在一個快照上操作,不會出現不可重複讀取的情況。

  SERIALIZABLE(序列化),通過保守的鎖策略【修改被別的事務讀取的資料的事務都要處於等待狀態】,在實現ACID。

 

具體實驗,可參看:http://xm-king.iteye.com/blog/770721。

還需要注意:並不是所有操作都能復原的,DDL操作就不能。

Mysql交易隔離等級

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.