91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

InnoDB MVCC的工作原理是什么

發布時間:2020-10-12 13:37:44 來源:億速云 閱讀:311 作者:小新 欄目:MySQL數據庫

這篇文章給大家分享的是有關InnoDB MVCC的工作原理是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

InnoDB MVCC的工作原理是什么

InnoDB 的 MVCC,是通過在每行記錄后面保存兩個隱藏的列實現的。這兩個列,一個保存了行的創建時間,一個保存行的過期時間(或刪除時間)。當然存儲的不是實際的時間值,而是系統版本號。每開始一個新的事務,系統版本號都會自動遞增。事務開始時刻的系統版本號會作為事務的版本號,用來和查詢到的每行記錄的版本號進行比較,下面看可重復讀隔離級別下,MVCC 具體是如何操作的。

SELECT

InnoDB會根據以下兩個條件檢查每行記錄

a. InnoDB只查找版本早于當前事務版本的數據行(也就是,行的系統版本號小于或者等于事務的系統版本號),這樣可以確保事務讀取的行,要么是在事務開始前已經存在的,要么是事務自身插入或者修改過的。

b. 行的刪除版本要么未定義,要么大于當前事務版本號。這可以確保事務讀取到的行,在事務開始之前未被刪除。

只有符合上述兩個條件的記錄,才能作為查詢結果返回。

INSERT

InnoDB為新插入的每一行保存當前系統版本號作為行版本號

DELETE

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

UPDATE

InnoDB為插入一行新紀錄,保存當前系統版本號作為行版本號,同時保存當前系統版本號到原來的行作為行刪除標識。

保存這兩個額外系統版本號,使大多數讀操作都可以不用加鎖。這樣設計使得讀數據操作很簡單,性能很好,并且也能保證只會讀取符合標準的行。不足之處是每行記錄都需要額外的存儲空間,需要做更多的行檢查工作,及一些額外的維護工作。

MVCC只在 REPEATABLE READ(可重復讀)和 READ COMMITTED(讀提交) 這兩個隔離級別下工作。其他兩個隔離級別都和 MVCC不兼容,因為READ UNCOMMITTED(讀未提交) 總是讀取最新的數據行,而不是符合當前事務版本的數據行。而 SERIALIZABLE(串行化) 則會對所有讀取的行都加鎖。

感謝各位的閱讀!關于InnoDB MVCC的工作原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

茂名市| 桐庐县| 遵化市| 甘南县| 广南县| 定结县| 安化县| 读书| 临清市| 定州市| 儋州市| 常熟市| 克什克腾旗| 繁峙县| 凌云县| 张家口市| 东丽区| 八宿县| 南开区| 土默特左旗| 黄冈市| 克拉玛依市| 当涂县| 惠安县| 绥芬河市| 宜春市| 泗水县| 茌平县| 漳平市| 专栏| 晴隆县| 汕尾市| 东兴市| 诏安县| 靖边县| 封开县| 如皋市| 宜州市| 新民市| 遂溪县| 乳源|