成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Mvcc機(jī)制

IT那活兒 / 2770人閱讀
Mvcc機(jī)制
點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

mvcc的全稱是(Multi-Version Concurrency Control)多版本并發(fā)控制。此機(jī)制是為了解決事務(wù)之間同時(shí)讀寫造成的鎖導(dǎo)致阻塞。

在數(shù)據(jù)庫中多個(gè)用戶對(duì)一張表的操作,可以簡單的概括為三種狀態(tài)。
  • 一張表,多個(gè)用戶同時(shí)讀取數(shù)據(jù)。(讀讀)
  • 一張表,一個(gè)用戶讀數(shù)據(jù),一個(gè)用戶寫數(shù)據(jù)。(讀寫)
  • 一張表,多個(gè)用戶同時(shí)寫數(shù)據(jù)。(寫寫)
像是第一種情況不會(huì)出現(xiàn)沖突,多個(gè)用戶可以同時(shí)執(zhí)行。
第三種情況是肯定有沖突不能同時(shí)執(zhí)行。

而第二種情況之前有一種很簡單粗暴的解決辦法,就是加鎖但是這樣的效率很低,而mvcc機(jī)制則是將表中每次更改的記錄都保存下來,如果有多個(gè)用戶進(jìn)行讀寫操作,那么讀數(shù)據(jù)的用戶所看到的只會(huì)是歷史數(shù)據(jù)。執(zhí)行寫操作的用戶只要事務(wù)沒有提交,在事務(wù)中所執(zhí)行的變更對(duì)于其他用戶來說都是不可見的。

事務(wù)與隔離

1. 事務(wù)
什么是事務(wù)?
簡單的說,事務(wù)就是將多個(gè)操作捆綁成一個(gè)操作。所有的操作要么同時(shí)執(zhí)行成功,要么同時(shí)執(zhí)行失敗全部回滾成初始狀態(tài)不會(huì)有第三種可能。這就是事務(wù)中非常重要的一個(gè)概念“原子性”。
  • 一致性:一個(gè)事務(wù)的執(zhí)行不能破壞數(shù)據(jù)庫的完整性和一致性,比如如果從A賬戶轉(zhuǎn)賬到B賬戶,不可能因?yàn)锳賬戶扣了錢,而B賬戶沒有加錢。
  • 隔離性:是指多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),應(yīng)該是互相隔離,不可相互干擾。此性質(zhì)下文會(huì)詳細(xì)解釋。
  • 持久性:是指事務(wù)一旦提交數(shù)據(jù)就必須永久保存,就算遇到系統(tǒng)或者服務(wù)器的故障也不會(huì)丟失。
2. 隔離的四個(gè)級(jí)別
  • 讀未提交 Read uncommitted

    這個(gè)級(jí)別可能會(huì)遇到一個(gè)問題“臟讀”,就是a事務(wù)中讀取到了b事務(wù)中更改的數(shù)據(jù),此時(shí)b事務(wù)回滾a事務(wù)讀到的數(shù)據(jù)最終未被更改。而a事務(wù)后續(xù)所有基于這個(gè)數(shù)據(jù)的操作都是錯(cuò)誤的。這個(gè)就是臟讀。

  • 讀已提交 Read committed

    這個(gè)級(jí)別不會(huì)出現(xiàn)臟讀的問題,但是重復(fù)讀的時(shí)候可能會(huì)發(fā)現(xiàn)多次讀取的結(jié)果不一樣。

    舉個(gè)例子a事務(wù)有兩個(gè)查詢x表的數(shù)據(jù),第一次查詢值為1。此時(shí)b事務(wù)執(zhí)行update修改x表值為2。a事務(wù)的第二個(gè)查詢的值就是2。

  • 讀可重復(fù) Repeatable read

    該級(jí)別解決了讀已提交的不可重復(fù)讀的問題,在事務(wù)開啟的時(shí)候,不能再修改操作了,直到該事務(wù)提交。(此時(shí)的不能修改值得是在事務(wù)中修改了也不會(huì)生效)。

    舉個(gè)例子a事務(wù)有兩個(gè)查詢x表的數(shù)據(jù),第一次查詢值為1。此時(shí)b事務(wù)執(zhí)行update修改x表值為2。a事務(wù)的第二個(gè)查詢的值還是1。明明已經(jīng)被修改但是查詢的結(jié)果還是未修改的的值,類似這樣的結(jié)果就是幻讀。(在gp中此隔離級(jí)別不會(huì)出現(xiàn)幻讀)

  • 序列化 Serializable

    在該級(jí)別下,事務(wù)是按照串行化的順序執(zhí)行,可以避免臟讀,重復(fù)讀,幻讀。雖然可以避免以上的幾種問題但是此級(jí)別的效率可想而知是非常低的。

在greenplum中每一行數(shù)據(jù),有4個(gè)隱藏字段。雖然這四個(gè)字段是隱藏的,但可以訪問。

  • xmin :在創(chuàng)建(insert)記錄(tuple)時(shí),記錄此值為插入tuple的事務(wù)ID。
  • xmax :默認(rèn)值為0.在刪除tuple時(shí),記錄此值。
  • cmin和cmax :標(biāo)識(shí)在同一個(gè)事務(wù)中多個(gè)語句命令的序列值,從0開始,用于同一個(gè)事務(wù)中實(shí)現(xiàn)版本可見性判斷。

mvcc機(jī)制的相關(guān)實(shí)驗(yàn)

建表:

開啟一個(gè)事務(wù),插入記錄,查看當(dāng)前的事務(wù)號(hào),可以看到隱藏的四個(gè)字段值,只有 xmin變成了13511。
開兩個(gè)窗口,一個(gè)窗口更新數(shù)據(jù),一個(gè)窗口更新數(shù)據(jù)前查一次,更新后查一次??梢钥吹絰max已經(jīng)改變,因?yàn)閜g更新數(shù)據(jù)是先刪除后插入所以xmax會(huì)發(fā)生變更。
這樣就證明了,greenplum中,讀寫時(shí)不沖突的。

本文作者:徐 瑞(上海新炬王翦團(tuán)隊(duì))

本文來源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129407.html

相關(guān)文章

  • Pgsql表膨脹的產(chǎn)生及處理

    Pgsql表膨脹的產(chǎn)生及處理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; marg...

    IT那活兒 評(píng)論0 收藏2845
  • 聊聊PostgreSQL事務(wù)id那點(diǎn)事

    聊聊PostgreSQL事務(wù)id那點(diǎn)事 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活兒 評(píng)論0 收藏2014
  • PostgreSQL鎖淺析

    PostgreSQL鎖淺析 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margi...

    IT那活兒 評(píng)論0 收藏74
  • 三年百度,五年阿里,阿里p8架構(gòu)師淺談:我是如何順利進(jìn)入BAT

    摘要:三年百度,五年阿里,阿里架構(gòu)師淺談我是如何順利進(jìn)入前些天在我群里認(rèn)識(shí)了以為挺有意思的老哥,他也是工作年多技術(shù)和面試都不差,最近也是在找工作,是從京城來魔都的,也和他撈了不少。 說來慚愧,也不怕你們笑話。做開發(fā)8年多,到目前還是一名不折不扣的掃地僧。年前的辭職,到現(xiàn)在還在家靜養(yǎng)中。其實(shí)也沒什么,就是回家總結(jié)一下自己這些年來在外工作與面試等做一個(gè)簡單的總結(jié)與反思。做一下自己后面一個(gè)人生規(guī)劃...

    seanlook 評(píng)論0 收藏0
  • 為什么開發(fā)人員必須要了解數(shù)據(jù)庫鎖?

    摘要:小明馬上開發(fā)完畢,成功上線。下班過后,小明回想大紅說的話,什么是間隙鎖,什么是插入意向鎖,看來作為開發(fā)者對(duì)數(shù)據(jù)庫不應(yīng)該只會(huì)寫啊,不然遇到一些疑難雜癥完全沒法解決啊。破壞了數(shù)據(jù)庫中的隔離性。 1.鎖? 1.1何為鎖 鎖在現(xiàn)實(shí)中的意義為:封閉的器物,以鑰匙或暗碼開啟。在計(jì)算機(jī)中的鎖一般用來管理對(duì)共享資源的并發(fā)訪問,比如我們java同學(xué)熟悉的Lock,synchronized等都是我們常見的...

    AbnerMing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<