久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > OCC和MVCC的區(qū)別是什么?

        OCC和MVCC的區(qū)別是什么?

        來(lái)源:千鋒教育
        發(fā)布人:xqq
        時(shí)間: 2023-10-13 02:11:46 1697134306

        一、OCC和MVCC的區(qū)別

        最簡(jiǎn)單的并發(fā)控制算法是2PL(2 Phase Locking),分為兩階段:

        1)獲得鎖階段;

        2)釋放鎖階段。

        一般2PL被稱(chēng)為是悲觀并發(fā)控制。

        與之相對(duì)的是樂(lè)觀并發(fā)控制OCC( Optimistic Concurrency Control)。OCC假設(shè)事務(wù)會(huì)成功,開(kāi)始事務(wù)時(shí)該讀讀,該寫(xiě)寫(xiě),不加鎖。只有到提交時(shí)做一下驗(yàn)證,驗(yàn)證這個(gè)事務(wù)是不是能夠成功提交。 OCC分為三階段:

        1)Read Phase, 對(duì)于讀,放到Read Set,對(duì)于寫(xiě),把寫(xiě)記到臨時(shí)副本,放到Write Set。因?yàn)閷?xiě)是寫(xiě)到臨時(shí)區(qū)的,屬于未提交結(jié)果,其它事務(wù)讀不到(這點(diǎn)是和MVCC的重要區(qū)別);

        2)Validation Phase,重掃Read Set,Write Set,檢驗(yàn)數(shù)據(jù)是否滿(mǎn)足Isolation Level,如果滿(mǎn)足則Commit,否則Abort;

        3)WritePhase,或者叫做Commit Phase,把臨時(shí)副本區(qū)的數(shù)據(jù)更新到數(shù)據(jù)庫(kù)中,完成事務(wù)提交。

        MVCC(Multiversion Concurrency Control)是另一種并發(fā)控制算法。MVCC為每條記錄維護(hù)多個(gè)快照(Snapshot),通過(guò)起止兩個(gè)時(shí)間戳(Begin Timestamp / End Timestamp)維護(hù)副本的可見(jiàn)性。讀寫(xiě)進(jìn)行的不同操作如下:

        Update,創(chuàng)建一個(gè)新的版本(Version);

        Delete,更新End Timestamp。

        Read,通過(guò)起止時(shí)間戳判定記錄是否對(duì)當(dāng)前事務(wù)可見(jiàn)(OCC讀不到未提交的記錄,所以不需要做這個(gè)判斷)。

        這樣,通過(guò)Snapshot,實(shí)現(xiàn)了讀寫(xiě)互不阻塞。但為了實(shí)現(xiàn)Serializable,對(duì)讀寫(xiě)規(guī)則還是要進(jìn)行一定的限制。MVCC通過(guò)不同的方法實(shí)現(xiàn)。有基于鎖定的,MV-2PL,如MySQL。有基于時(shí)間排序(Time Ordering)的,叫MV-TO,如PostgreSQL。其實(shí)準(zhǔn)確來(lái)說(shuō),PG的實(shí)現(xiàn)叫SSI(Serializable Snapshot Isolation),不算MV-TO。也有像OCC那樣基于樂(lè)觀算法的,MV-OCC,即讀寫(xiě)時(shí)不做驗(yàn)證,延遲到提交時(shí)驗(yàn)證。

        效率上,2PL讀寫(xiě)阻塞,在維護(hù)鎖開(kāi)銷(xiāo)較小時(shí)較好;OCC不維護(hù)鎖,一些比較新的OCC算法吞吐可以做得很高,不過(guò)相應(yīng)回滾也會(huì)比較高,沖突比較小和驗(yàn)證開(kāi)銷(xiāo)小時(shí)比較好;MVCC對(duì)不同類(lèi)型的workload都有很好的適應(yīng)性,讀寫(xiě)互不阻塞,回滾率也比OCC好,很多RDBMS也都用MVCC,如Oracle,PostgreSQL,MySQL。還有一個(gè)效率問(wèn)題,隨著現(xiàn)在CPU核心數(shù)越來(lái)越多,考慮并發(fā)控制算法往往需要考慮它的多核擴(kuò)展性好不好。由于多數(shù)MVCC,OCC算法都需要時(shí)間戳分配,時(shí)間戳通常對(duì)全局變量進(jìn)行CAS(Compare And Swap)操作來(lái)計(jì)算,當(dāng)核心數(shù)變大時(shí),CAS的爭(zhēng)用也變大了。

        另外,現(xiàn)在的許多并發(fā)控制方法經(jīng)?;旌狭硕喾N算法。先有人提出了A,后有人提出了B,再后來(lái)就有人提出了A+B,那么A+B應(yīng)該是叫A呢還是叫B呢?就像上面提到的MV-2PL,MV-TO,MV-OCC。

        延伸閱讀:

        二、id的一些典型的類(lèi)型

        整型:整型通常來(lái)說(shuō)是優(yōu)異的選擇,這是因?yàn)檎偷倪\(yùn)算和比較都很快,而且還可以設(shè)置 AUTO_INCREMENT 屬性自動(dòng)遞增。ENUM 和 SET:通常不會(huì)選擇枚舉和集合作為 id,然后對(duì)于那些包含有“類(lèi)型”、“狀態(tài)”、“性別”這類(lèi)型的列來(lái)說(shuō)是挺合適的。例如我們需要有一張表存儲(chǔ)下拉菜單時(shí),通常會(huì)有一個(gè)值和一個(gè)名稱(chēng),這個(gè)時(shí)候值使用枚舉作為主鍵也是可以的。字符串:盡可能地避免使用字符串作為 id,一是字符串占據(jù)的空間更大,二是通常會(huì)比整型慢。選用字符串作為 id 時(shí),還需要特別注意 MD5、SHA1和 UUID 這些函數(shù)。每個(gè)值是在很大范圍的隨機(jī)值,沒(méi)有次序,這會(huì)導(dǎo)致插入和查詢(xún)更慢:插入的時(shí)候,由于建立索引是隨機(jī)位置(會(huì)導(dǎo)致分頁(yè)、隨機(jī)磁盤(pán)訪問(wèn)和聚集索引碎片),會(huì)降低插入速度。查詢(xún)的時(shí)候,相鄰的數(shù)據(jù)行在磁盤(pán)或內(nèi)存上上可能跨度很大,也會(huì)導(dǎo)致速度更慢。

        如果確實(shí)要使用 UUID 值,應(yīng)當(dāng)移除掉“-”字符,或者是使用 UNHEX 函數(shù)將其轉(zhuǎn)換為16字節(jié)數(shù)字,并使用 BINARY(16)存儲(chǔ)。然后可以使用 HEX 函數(shù)以十六進(jìn)制的方式進(jìn)行獲取。UUID 產(chǎn)生的方法有很多,有些是隨機(jī)分布的,有些是有序的,但是即便是有序的性能也不如整型。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        人大金倉(cāng)數(shù)據(jù)庫(kù)是完全基于自研,是基于pc或是別的什么?

        一、人大金倉(cāng)數(shù)據(jù)庫(kù)北京人大金倉(cāng)數(shù)據(jù)庫(kù)管理系統(tǒng)KingbaseES基于自主研究,它是北京人大金倉(cāng)信息技術(shù)股份有限公司經(jīng)過(guò)多年努力,開(kāi)發(fā)的具有自主知...詳情>>

        2023-10-13 03:51:35
        在Nodejs中使用MySQL數(shù)據(jù)庫(kù)的優(yōu)異實(shí)踐是什么?

        一、在Nodejs中使用MySQL數(shù)據(jù)庫(kù)的優(yōu)異實(shí)踐1. 請(qǐng)一直使用pool,沒(méi)有何時(shí)。2. pool在程序初始化的時(shí)候創(chuàng)建,無(wú)需銷(xiāo)毀,從中抽取實(shí)例連接就行,無(wú)...詳情>>

        2023-10-13 03:26:40
        InnoDB的意向鎖有什么作用?

        一、InnoDB的意向鎖的作用1、鎖沖突優(yōu)化意向鎖提供了一種機(jī)制,讓事務(wù)可以事先聲明它將在某個(gè)級(jí)別對(duì)數(shù)據(jù)行進(jìn)行鎖定。這樣其他事務(wù)可以更快速地...詳情>>

        2023-10-13 03:08:17
        文件系統(tǒng)和數(shù)據(jù)庫(kù)是由于什么原因才選擇B樹(shù)或B+樹(shù)建立?

        一、文件系統(tǒng)和數(shù)據(jù)庫(kù)是由于什么原因才選擇B樹(shù)或B+樹(shù)建立索引的索引的目標(biāo)是要找到數(shù)據(jù)所在的物理位置,因此用樹(shù)去實(shí)現(xiàn)搜索數(shù)據(jù)所在物理位置,...詳情>>

        2023-10-13 03:03:02
        系統(tǒng)運(yùn)維、IT運(yùn)維、網(wǎng)絡(luò)運(yùn)維、數(shù)據(jù)庫(kù)運(yùn)維有哪些區(qū)別?

        一、系統(tǒng)運(yùn)維、IT運(yùn)維、網(wǎng)絡(luò)運(yùn)維、數(shù)據(jù)庫(kù)運(yùn)維區(qū)別網(wǎng)絡(luò)運(yùn)維,數(shù)據(jù)庫(kù)運(yùn)維,Linux運(yùn)維,window運(yùn)維,桌面運(yùn)維,根底架構(gòu)運(yùn)維,信息體系運(yùn)維,ERP體...詳情>>

        2023-10-13 02:58:27
        快速通道
        班玛县| 旅游| 封丘县| 竹溪县| 全州县| 馆陶县| 高州市| 石渠县| 宜良县| 新闻| 威宁| 河间市| 盐山县| 宜城市| 昌邑市| 海门市| 如东县| 宝鸡市| 洛隆县| 齐齐哈尔市| 南靖县| 磐安县| 蒙自县| 新竹县| 当涂县| 安丘市| 安吉县| 乌鲁木齐县| 肃北| 玉田县| 尼玛县| 新沂市| 工布江达县| 巴青县| 威海市| 白朗县| 安达市| 嘉定区| 潞西市| 安国市| 长治市|