国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

            領取全套視頻
            千鋒教育

            關注千鋒學習站小程序
            隨時隨地免費學習課程

            當前位置:首頁  >  技術干貨  > OCC和MVCC的區(qū)別是什么?

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

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

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

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

            1)獲得鎖階段;

            2)釋放鎖階段。

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

            與之相對的是樂觀并發(fā)控制OCC( Optimistic Concurrency Control)。OCC假設事務會成功,開始事務時該讀讀,該寫寫,不加鎖。只有到提交時做一下驗證,驗證這個事務是不是能夠成功提交。 OCC分為三階段:

            1)Read Phase, 對于讀,放到Read Set,對于寫,把寫記到臨時副本,放到Write Set。因為寫是寫到臨時區(qū)的,屬于未提交結果,其它事務讀不到(這點是和MVCC的重要區(qū)別);

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

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

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

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

            Delete,更新End Timestamp。

            Read,通過起止時間戳判定記錄是否對當前事務可見(OCC讀不到未提交的記錄,所以不需要做這個判斷)。

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

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

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

            延伸閱讀:

            二、id的一些典型的類型

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

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

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

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

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

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

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

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

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

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

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

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

            2023-10-13 02:58:27
            快速通道