mysql 的mvcc 作用和原理

mysql 的mvcc 作用

Mysql有四種隔離級別,分別是讀未提交、讀已提交、可重復讀和串行化。mvcc可以實現(xiàn)讀已提交和可重復讀。對于讀已提交,mvcc會在每次查詢時生成ReadView快照,而對于可重復讀會在第一次查詢時生成ReadView快照。

mvcc的實現(xiàn)

mvcc的實現(xiàn)依賴于undo log版本鏈,和ReadView快照。
undo log中會保存事務的基本信息、當前事務id以及前一個undolog地址,日志與日志之間通過這樣的鏈接形成了版本鏈。
ReadView快照中包含了正在執(zhí)行的事務id數(shù)組(m_ids)、正在執(zhí)行事務id的最小值(min_trx_id)、下一個要生成的id(max_trx_id)、創(chuàng)建ReadView的事務id(creator_trx_id)。

如何判斷版本鏈中的某條日志內(nèi)容是否對當前事務可見

if (trx_id<min_trx_id) {
          該版本對當前事務可見
     } else if (trx_id >= max_trx_id){
          該版本對當前事務不可見
     } else {
          if (m_ids.contains(trx_id)) {
               該版本對當前事務不可見
          } else {
               該版本對當前事務可見
          }
     }
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容