mysql-innoDB-多版本並發控制(MVCC)

來源:互聯網
上載者:User

標籤:系統版本   article   blog   com   復原   comm   insert   undo   one   

  InnoDB的MVCC,是通過在每行記錄後面儲存三個隱藏的列來實現的其中的兩個列一個儲存了行的建立時間,一個儲存行的到期時間(或刪除時間)。當然儲存的並不是實際的時間值,而是系統版本號碼(system version number):

  1、DB_TRX_ID :6位元組的事務ID,每處理一個事務,其值自動+1,上述說的 “建立時間”和 “刪除時間” 記錄的就是這個DB_TRX_ID值,DB_TRX_ID是最重要的一個,可以通過“show engine innodb status”來查

  2、DB_ROLL_PTR:大小時7byte,指向寫到rollback segment(復原段)的一條undo log記錄(update操作的話,記錄update前的row值)

  3、DB_ROLL_ID:大小是6位元組,該值隨新行插入單調增加,當由innodb自動產生叢集索引時,叢集索引包括這個DB_ROW_ID的值,不然的話叢集索引中不包括這個值(我的理解是如果叢集索引不是自動產生的話,就不會有DB_ROLL_ID這個值)。 這個用於索引當中
  MVCC只在REPEATABLE READ和READ COMMITTED兩個隔離等級下工作。其他兩個隔離等級都和MVCC不相容。下面看一下在REPEATABLE READ隔離等級下,MVCC具體是如何操作的

  SELECT

    • InnoDB只尋找版本早於當前事務版本的資料行(也就是行的系統版本號碼必須小於等於事務的版本),這確保當前事務讀取的行都是事務之前已經存在的,或者是由當前事務建立或修改過的。
    • 行的刪除操作的版本一定是未定義的或者大於當前事務的版本號碼。確定了當前事務開始之前,行沒有被刪除

  只有符合上述兩點才能返回查詢結果。

  INSERT

    InnoDB為每個新增行記錄當前系統版本號碼作為建立ID

  DELETE

     InnoDB為刪除的每一行儲存當前系統版本號碼作為行刪除標識

  UPDATE 

    InnoDB為插入一行新記錄,儲存當前系統版本號碼作為行版本號碼,同事儲存當前系統版本號碼到原來的行作為行刪除標識

參考:

[1] 《高效能MySQL》(第三版), Baron Schwartz等 著,寧海元等 譯,電子工業出版社 ,2013

[2] 部落格,http://www.cnblogs.com/chenpingzhao/p/5065316.html

[3] 部落格,https://www.percona.com/blog/2014/12/17/innodbs-multi-versioning-handling-can-be-achilles-heel/

[4] 部落格,http://blogread.cn/it/article/5969

[5] 部落格,http://blog.csdn.net/chen77716/article/details/6742128

[6] 部落格,http://blog.chinaunix.net/link.php?url=http://forge.mysql.com%2Fwiki%2FMySQL_Internals

mysql-innoDB-多版本並發控制(MVCC)

聯繫我們

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