国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Mvcc機(jī)制

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

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

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

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

事務(wù)與隔離

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

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

  • 讀已提交 Read committed

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

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

  • 讀可重復(fù) Repeatable read

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

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

  • 序列化 Serializable

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

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

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

mvcc機(jī)制的相關(guān)實驗

建表:

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

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

本文來源:“IT那活兒”公眾號

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.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那活兒 評論0 收藏2845
  • 聊聊PostgreSQL事務(wù)id那點事

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

    IT那活兒 評論0 收藏2014
  • PostgreSQL鎖淺析

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

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

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

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

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

    AbnerMing 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<