一.MVCC是什么
MVCC 是 Multi-Version Concurrency Control(多版本并發(fā)控制)的縮寫,是數(shù)據(jù)庫系統(tǒng)中常用的一種并發(fā)控制方法。在MVCC 中,數(shù)據(jù)庫系統(tǒng)可以同時維護多個版本的數(shù)據(jù),每個事務(wù)在讀取數(shù)據(jù)時會看到一個一致性的快照,從而實現(xiàn)并發(fā)訪問而不會出現(xiàn)數(shù)據(jù)不一致的情況。這種機制能夠提高數(shù)據(jù)庫系統(tǒng)的并發(fā)性能和并發(fā)控制能力。
二.原理
1.隱藏的默認字段
2.Undo log
3.Undo log版本鏈
4. ReadView
三.回答
其中mvcc的意思是多版本并發(fā)控制。指維護一個數(shù)據(jù)的多個版本,使得讀寫操作沒有沖突,它的底層實現(xiàn)主要是分為了三個部分,第一個是隱藏字段,第二個是undo log日志,第三個是readView讀視圖
隱藏字段是指:在mysql中給每個表都設(shè)置了隱藏字段,有一個是trx_id(事務(wù)id),記錄每一次操作的事務(wù)id,是自增的;另一個字段是roll_pointer(回滾指針),指向上一個版本的事務(wù)版本記錄地址
undo log主要的作用是記錄回滾日志,存儲老版本數(shù)據(jù),在內(nèi)部會形成一個版本鏈,在多個事務(wù)并行操作某一行記錄,記錄不同事務(wù)修改數(shù)據(jù)的版本,通過roll_pointer指針形成一個鏈表文章來源:http://www.zghlxwxcb.cn/news/detail-839812.html
readView解決的是一個事務(wù)查詢選擇版本的問題,在內(nèi)部定義了一些匹配規(guī)則和當(dāng)前的一些事務(wù)id判斷該訪問那個版本的數(shù)據(jù),不同的隔離級別快照讀是不一樣的,最終的訪問的結(jié)果不一樣。如果是rc隔離級別,每一次執(zhí)行快照讀時生成ReadView,如果是rr隔離級別僅在事務(wù)中第一次執(zhí)行快照讀時生成ReadView,后續(xù)復(fù)用文章來源地址http://www.zghlxwxcb.cn/news/detail-839812.html
到了這里,關(guān)于MVCC------Mysql并發(fā)事務(wù)控制的工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!