国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

MySQLMVCC實現及其機制_MySQL

來源:懂視網 責編:小采 時間:2020-11-09 17:55:18
文檔

MySQLMVCC實現及其機制_MySQL

MySQLMVCC實現及其機制_MySQL:Multi-Version Concurrency Control 多版本并發控制 大多數的MySQL事務型存儲引擎,如InnoDB,Falcon以及PBXT都不使用一種簡單的行鎖機制。事實上,他們都和和另外一種用來增加并發性的被稱為“多版本并發控制(MVCC)”的機制來一
推薦度:
導讀MySQLMVCC實現及其機制_MySQL:Multi-Version Concurrency Control 多版本并發控制 大多數的MySQL事務型存儲引擎,如InnoDB,Falcon以及PBXT都不使用一種簡單的行鎖機制。事實上,他們都和和另外一種用來增加并發性的被稱為“多版本并發控制(MVCC)”的機制來一

Multi-Version Concurrency Control 多版本并發控制  

大多數的MySQL事務型存儲引擎,如InnoDB,Falcon以及PBXT都不使用一種簡單的行鎖機制。

事實上,他們都和和另外一種用來增加并發性的被稱為“多版本并發控制(MVCC)”的機制來一直使用。

MVCC不只使用在MySQL中,Oracle,PostgreSQL以及其他一些數據為系統也同樣使用它。   

你可將將MVCC看成行級別鎖的一種妥協,它在許多情況下避免了使用鎖,同時可以提供更小的開銷。

根據實現的不同,它可以允許非阻塞式讀,在寫操作進行時只鎖定必要的記錄。   

MVCC會保存某個時間點上的數據快照。

這意味闃事務可以看到一個一致的數據視圖,不管他們需要跑多久。

這同時也意味著不同的事務在同一個時間點看到的同一個表的數據可能是不同的。

如果你從來沒有過種體驗的話,可能理解起來比較抽象,但是隨著慢慢地熟悉這種理解將會很容易。   

各個存儲引擎對于MVCC的實現各不相同。

這些不同中的一些包括樂觀和悲觀并發控制。

我們將通過一個簡化的InnoDB版本的行為來展示MVCC工作的一個側面。   

InnoDB:通過為每一行記錄添加兩個額外的隱藏的值來實現MVCC,這兩個值一個記錄這行數據何時被創建,另外一個記錄這行數據何時過期(或者被刪除)。但是InnoDB并不存儲這些事件發生時的實際時間,相反它只存儲這些事件發生時的系統版本號。這是一個隨著事務的創建而不斷增長的數字。每個事務在事務開始時會記錄它自己的系統版本號。每個查詢必須去檢查每行數據的版本號與事務的版本號是否相同。讓我們來看看當隔離級別是REPEATABLE READ時這種策略是如何應用到特定的操作的:   SELECT InnoDB必須每行數據來保證它符合兩個條件:   

1、InnoDB必須找到一個行的版本,它至少要和事務的版本一樣老(也即它的版本號不大于事務的版本號)。這保證了不管是事務開始之前,或者事務創建時,或者修改了這行數據的時候,這行數據是存在的。   

2、這行數據的刪除版本必須是未定義的或者比事務版本要大。這可以保證在事務開始之前這行數據沒有被刪除。   

符合這兩個條件的行可能會被當作查詢結果而返回。   

INSERT:InnoDB為這個新行記錄當前的系統版本號。   

DELETE:InnoDB將當前的系統版本號設置為這一行的刪除ID。   

UPDATE:InnoDB會寫一個這行數據的新拷貝,這個拷貝的版本為當前的系統版本號。

它同時也會將這個版本號寫到舊行的刪除版本里。   

這種額外的記錄所帶來的結果就是對于大多數查詢來說根本就不需要獲得一個鎖。

他們只是簡單地以最快的速度來讀取數據,確保只選擇符合條件的行。

這個方案的缺點在于存儲引擎必須為每一行存儲更多的數據,做更多的檢查工作,處理更多的善后操作。   

MVCC只工作在REPEATABLE READ和READ COMMITED隔離級別下。

READ UNCOMMITED不是MVCC兼容的,因為查詢不能找到適合他們事務版本的行版本;

它們每次都只能讀到最新的版本。

SERIABLABLE也不與MVCC兼容,因為讀操作會鎖定他們返回的每一行數據[1]

編輯本段說明

通過使用MVCC(Multi-Version Concurrency Control)算法自動提供并發控制。MVCC維持一個數據的多個版本使讀寫操作沒有沖突。也就是說數據元素X上的每一個寫操作產生X的一個新版本,GBase 8m為X的每一個讀操作選擇一個版本。由于消除了數據庫中數據元素讀和寫操作的沖突,GBase 8m得到優化,具有更好的性能。特別是對于數據庫讀和寫兩種方法,他們不用等待其他同時進行的相同數據寫和讀的完成。在并發事務中,數據庫寫只等待正在對同一行數據進行更新的寫,這是現有的行鎖定方法的弱點。同時MVCC回收不需要的和長時間不用的內存,防止內存空間的浪費。MVCC優化了數據庫并發系統,使系統在有大量并發用戶時得到最高的性能,并且可以不用關閉服務器就直接進行熱備份。

編輯本段比鎖定的優勢

使用MVCC多版本并發控制比鎖定模型的主要優點是在MVCC里, 對檢索(讀)數據的鎖要求與寫數據的鎖要求不沖突, 所以讀不會阻塞寫,而寫也從不阻塞讀。  在數據庫里也有表和行級別的鎖定機制, 用于給那些無法輕松接受 MVCC 行為的應用。 不過,恰當地使用 MVCC 總會提供比鎖更好地性能。

編輯本段GBase8的特性

在 GBase 中的查詢功能通過 MVCC 提供的一致性非鎖讀(在下文我們簡稱為一致性讀),就是提供通過數據庫在一個時間點上的快照來實現信息的查詢。查詢只是對那些在這個時間點之前提交的事務所做的變更,而并不關注在時間點之后的變更或未提交的事務。當然,若是該事務自身進行的變更,對于查詢是可見的。  GBase 的默認級別是 READ COMMITTED ,在該隔離級別下事務中的查詢語句,使用當前時間戳進行一致性讀,每次查詢的時間戳是不相同的。  但對 REPEATABLE READ 隔離級別,在同一個事務中的所有一致性讀,使用的時間戳均是第一個查詢的時間戳,這樣讀取的也就是由該事務第一次讀建立起來的數據快照。用戶只有通過提交當前事務,并發出一個新的查詢才會得到新的數據快照。  一致性讀是 GBase 在 READ COMMITTED 和 REPEATABLE READ 隔離級別下,處理 SELECT 語句中使用的默認模式。一致性讀在它讀的數據上不設置任何鎖,因此在一致性讀某個表的同時,其它用戶均可以修改這個表。  注意在 DROP TABLE 和 ALTER TABLE 運作時,一致性讀無效 。一致性讀在 DROP TABLE 上無效是因為 GBase 不能使用已經 drop 的表,該表已經刪除。一致性讀在 ALTER TABLE 上無效是因為 GBase 會在事務內,重新創建一個新表并從舊表向新表插入記錄。這樣當用戶再次執行一致性讀時,在新表中將看不到任何行,因為在新表中的數據都在第一次一致性讀的快照之外。參考資料
  • 1

    《高性能MySQL》第二版

  • 擴展閱讀:
  • 1

    http://www.gbase.cn/onlineHelp/html/ManagerManual/ch04020202.html

  • 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQLMVCC實現及其機制_MySQL

    MySQLMVCC實現及其機制_MySQL:Multi-Version Concurrency Control 多版本并發控制 大多數的MySQL事務型存儲引擎,如InnoDB,Falcon以及PBXT都不使用一種簡單的行鎖機制。事實上,他們都和和另外一種用來增加并發性的被稱為“多版本并發控制(MVCC)”的機制來一
    推薦度:
    標簽: 存儲 mysql 機制
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 快播电影网日韩新片 | 欧美一级在线观看 | 国产日产高清欧美一区二区三区 | 日韩欧美视频一区二区 | 欧美日韩国产在线播放 | 精品国产一区二区三区成人 | 亚洲日韩欧美一区二区在线 | 一级毛片免费下载 | 欧美在线一区二区 | 国产人成精品综合欧美成人 | 久久亚洲精品国产精品777777 | h片在线观看 | 久久成人国产 | 97久久精品午夜一区二区 | 欧美 日韩 亚洲另类专区 | 息子五十路 | 欧美精品国产综合久久 | 欧美一区二区三区在线 | 亚洲视频五区 | 国产成人+亚洲欧洲 | 亚洲图区欧美 | 国产一区二区不卡免费观在线 | 国产高清不卡码一区二区三区 | 日韩欧美高清在线 | 中文字幕免费在线播放 | 国产成人无精品久久久久国语 | 国产一区二区三区精品视频 | 国产成人综合久久精品尤物 | 午夜日韩| 手机国产精品一区二区 | 亚洲欧洲日产国码一级毛片 | 国产中文久久精品 | 制服丝袜先锋影音 | 精品一区二区三区在线视频 | 免费一级a毛片在线播 | 国产一级片视频 | 国产片在线观看 | 91久久精品国产91久久性色也 | 日韩 亚洲 制服 欧美 综合 | 日韩黄色网址 | 亚洲 欧美 手机 在线观看 |