国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 基礎(chǔ)知識 > 正文

在MVCC中快照怎么工作的

2024-09-12 20:29:56
字體:
供稿:網(wǎng)友
  這篇文章將為大家詳細(xì)講解有關(guān)MVCC中快照怎么工作的,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
 
  在 MySQL 中(innodb存儲引擎),實(shí)際上每條記錄在更新的時候都會同時記錄一條回滾操作。記錄上的最新值,通過回滾操作,都可以得到前一個狀態(tài)的值。
 
  假設(shè)一個值從 1 被按順序改成了 2、3、4,在回滾日志里面就會有類似下面的記錄。
 
  當(dāng)前值是 4,但是在查詢這條記錄的時候,不同時刻啟動的事務(wù)會有不同的 read-view。如圖中看到的,在視圖 A、B、C 里面,這一個記錄的值分別是 1、2、4,同一條記錄在系統(tǒng)中可以存在多個版本,就是數(shù)據(jù)庫的多版本并發(fā)控制(MVCC)。對于 read-view A,要得到 1,就必須將當(dāng)前值依次執(zhí)行圖中所有的回滾操作得到。
 
  這個視圖數(shù)組把所有的 row trx_id 分成了幾種不同的情況。
 
  MVCC中快照怎么工作的
 
  這樣,對于當(dāng)前事務(wù)的啟動瞬間來說,一個數(shù)據(jù)版本的 row trx_id,有以下幾種可能:
 
  如果落在綠色部分,表示這個版本是已提交的事務(wù)或者是當(dāng)前事務(wù)自己生成的,這個數(shù)據(jù)是可見的;
 
  如果落在紅色部分,表示這個版本是由將來啟動的事務(wù)生成的,是肯定不可見的;
 
  如果落在黃色部分,那就包括兩種情況
 
  a. 若 row trx_id 在數(shù)組中,表示這個版本是由還沒提交的事務(wù)生成的,不可見;
 
  b. 若 row trx_id 不在數(shù)組中,表示這個版本是已經(jīng)提交了的事務(wù)生成的,可見。

  那么事務(wù)A的ID是100
 
  此時對于事務(wù)A的視圖數(shù)組是這樣的 【90 93 95 100】,其中 低水位是 90, 高水位是100+1=101;
 
  假如讀到了ID是104的,大于高水位101,表示這個版本是由將來啟動的事務(wù)生成的,是肯定不可見的;
 
  讀到了ID是88的,小于低水位90,表示這個版本是已提交的事務(wù)或者是當(dāng)前事務(wù)自己生成的,這個數(shù)據(jù)是可見的;
 
  讀到了ID是94的,在低水位和高水位之間,但是不在【90 93 95 100】這個數(shù)組里,表示這個版本是已經(jīng)提交了的事務(wù)生成的,可見。
 
  讀到了ID是93的,在低水位和高水位之間,這【90 93 95 100】這個數(shù)組里,表示這個版本是由還沒提交的事務(wù)生成的,不可見;
 
  這個判斷規(guī)則是從代碼邏輯直接轉(zhuǎn)譯過來的,但是正如你所見,用于人肉分析可見性很麻煩。
 
  所以,我來給你翻譯一下。一個數(shù)據(jù)版本,對于一個事務(wù)視圖來說,除了自己的更新總是可見以外,有三種情況:
 
  版本未提交,不可見;
 
  版本已提交,但是是在視圖創(chuàng)建后提交的,不可見;
 
  版本已提交,而且是在視圖創(chuàng)建前提交的,可見。
 
  關(guān)于“MVCC中快照怎么工作的”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
 

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 建瓯市| 湘乡市| 大荔县| 扎兰屯市| 通海县| 福泉市| 开化县| 祥云县| 临安市| 务川| 南溪县| 军事| 交城县| 鱼台县| 罗甸县| 沂源县| 福鼎市| 林州市| 庆安县| 图木舒克市| 上饶市| 长兴县| 太保市| 贺州市| 昔阳县| 耒阳市| 东乌| 涿州市| 济南市| 和政县| 拜城县| 济阳县| 灵宝市| 常宁市| 广昌县| 洪江市| 阿荣旗| 历史| 锦屏县| 兖州市| 牙克石市|