mysql之innodb的mvcc多版本控制

來源:互聯網
上載者:User

標籤:mysql之innodb的mvcc工作原理

來源於mysql高效能第三版:

  我們通過Innodb的簡化版行為來說明mvcc是如何工作的。

  InnoDB的MVCC,是通過每行記錄後便儲存兩個隱藏的列來實現的。這兩個列,一個儲存了行的建立時間,一個儲存了行的到期時間(刪除時間)。當然儲存的並不是實際的時間值,而是系統版本號碼。每開始一個新的事物,系統版本號碼都會自動遞增。事物開始時刻的系統版本號碼會作為事物的版本號碼,用來和查詢到行記錄的版本號碼進行比較。下面看一下在REPEATABLE READ隔離等級下,mvcc具體是如何操作的。

 SELECT

  Innodb會根據一下2個條件檢查每行記錄:

    a. innodb只尋找版本號碼早於當前系統版本的資料行(也就是,行的系統版本號碼小於或等於事物的系統版本號碼),這樣可以確保事物讀取的行,要麼是在事物開始前就存在,要麼是事物自身插入或者修改過。

     b. 行的刪除版本要麼未定義,要麼大於當前系統版本號碼。這可以確保事物讀取到的行,在事物開始前未被刪除。

 INSERT

   innodb為新插入的每一行儲存當前系統版本號碼作為行的版本號碼。

 DELETE

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

 UPDATE

  innodb為插入新記錄,儲存當前系統版本號碼為行版本號碼,同時儲存當前系統版本號碼為原來的行為行刪除標識。

 mvcc實在 repeatable read 和 read commited 兩個隔離等級下工作。

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.