成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

三言兩語RR與RC那點(diǎn)事

IT那活兒 / 2288人閱讀
三言兩語RR與RC那點(diǎn)事

點(diǎn)擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!


01


從事數(shù)據(jù)庫開發(fā)和運(yùn)維的人員或多或少都了解過關(guān)于《可重復(fù)讀和讀提交》這2種隔離級別,今天我們就來研究一下。


02


一般來說事務(wù)存在4大特性ACID(原子性、一致性、隔離性、持久性),這里我們主要來說一下隔離性。
當(dāng)多個事務(wù)并發(fā)執(zhí)行時,數(shù)據(jù)庫為了保證事務(wù)之間的隔離性便引入了隔離級別的概念。SQL標(biāo)準(zhǔn)將事務(wù)隔離級別分為讀未提交(read uncinnutted),讀已提交(read committed/RC),可重復(fù)度(repeatable read/RR),串行化(serializable)。
如下:

表格中讀未提交與串行化比較簡單,也不常用。目前主流數(shù)據(jù)庫采用的主要是讀已提交和可重復(fù)度。
我們舉個例子來描述一下:
2種模式下T3時刻分別獲取到了不同的值。
分別來看一下,在T3時刻,可重復(fù)讀級別下,雖然T2時刻其他事務(wù)已提交變更,但是事務(wù)任然以啟動時間T1為準(zhǔn),也就是查詢結(jié)果需要與T1保持一致,即T2事務(wù)屬于未來事務(wù),不可見。而在讀已提交級別下以當(dāng)前語句時刻為準(zhǔn),對于T3時刻而言,T2時刻屬于已提交事務(wù),即可獲取T2時刻已提交的變更。
這里我們可以發(fā)現(xiàn)2種隔離級別主要區(qū)別在于事務(wù)起點(diǎn)時刻的劃分,也可以稱為數(shù)據(jù)庫快照(簡單理解就是數(shù)據(jù)庫某一時刻的全局事務(wù)狀態(tài))的劃分。
對于數(shù)據(jù)庫任意時刻的快照而言總是存在如下3種情況:
  • 對于快照n而言未提交的事務(wù)總是不可見。

  • 快照n之后,其他事務(wù)x做的提交,這里包含快照n之前啟動在n之后完成提交的事務(wù)也包含快照n之后新啟動完成提交的事務(wù),對于快照n而言在其之后提交的事務(wù)都屬于未來事務(wù),同樣不可見。

  • 快照之前已完成提交的事務(wù)才可見。

也就是說對于可重復(fù)讀級別而言快照以事務(wù)開始時間為準(zhǔn),讀已提交級別下每條SQL語句啟動時重新獲取當(dāng)前數(shù)據(jù)庫的快照以便獲取最新已提交的事務(wù)情況。


03


這里可能有些同學(xué)會有疑問,在RR級別下,T3時刻將T減1是不是意味著T2時刻的事務(wù)變更會丟失?
如下:
針對這個問題,數(shù)據(jù)庫引擎當(dāng)然沒有那么小白,這里適用一條新的規(guī)則, 發(fā)生DML時,需要讀取已提交事務(wù)的最新值,這個讀一般稱為"當(dāng)前讀"(current read)。
案例中也就是T3發(fā)起set DML時需要獲取已提交的最新值也就是T=2后,再進(jìn)行運(yùn)算,這就不存在事務(wù)丟失的風(fēng)險了,需要注意如果事務(wù)n進(jìn)行了修改但是沒有提交,這里事務(wù)1就會產(chǎn)生行鎖等待,這里我們就不再展開介紹了。

04


最后來總結(jié)一下這2種隔離級別的適用場景:
4.1 RC:適用于CRM類查詢相對較多,需要獲取最新值類系統(tǒng)。
查詢與修改7:1,8:1等等,注意具體參考實際系統(tǒng),并不絕對。
4.2 RR:適用于對賬類系統(tǒng),比如信用卡賬戶表與信用卡消費(fèi)明細(xì)表。
采取RC隔離級別時,如果不將數(shù)據(jù)靜止化,對賬的事務(wù)周期內(nèi),賬戶表余額或明細(xì)表一直發(fā)生變更,那整個賬本永遠(yuǎn)也無法對賬一致。
另外比如mysqldump之類的邏輯備份,使用--single-transaction時自動設(shè)置會話事務(wù)為RR,其不僅僅是備份出數(shù)據(jù),同樣需要保證數(shù)據(jù)與數(shù)據(jù)之間的邏輯一致性。

END



本文作者:胡 杰

本文來源:IT那活兒(上海新炬王翦團(tuán)隊)

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129486.html

相關(guān)文章

  • 容器化管理平臺存儲點(diǎn)事

    摘要:機(jī)器配置主機(jī)名地址說明存儲節(jié)點(diǎn)存儲節(jié)點(diǎn)測試掛載的機(jī)器格式化和掛載磁盤主要目的就是將磁盤格式化為,作為的底層存儲文件系統(tǒng)個節(jié)點(diǎn)都需要執(zhí)行注意這個示例是以作為數(shù)據(jù)磁盤。 以 Docker 為代表的容器技術(shù)在云計算領(lǐng)域正扮演著越來越重要的角色,甚至一度被認(rèn)為是虛擬化技術(shù)的替代品。企業(yè)級的容器應(yīng)用常常需要將重要的數(shù)據(jù)持久化,方便在不同容器間共享。為了能夠持久化數(shù)據(jù)以及共享容器間的數(shù)據(jù),Dock...

    xcold 評論0 收藏0
  • 關(guān)于localStorage面試的點(diǎn)事

    摘要:已經(jīng)超出本地存儲限定大小可進(jìn)行超出限定大小之后的操作,如下面可以先清除記錄,再次保存面試官一波素質(zhì)三連對于只是會使用的同學(xué)來說,肯定是不得其解的。 最近面試的時候關(guān)于html5API總會被問到localStorage的問題, 對于一般的問題很簡單,無非就是 localStorage、sessionStorage和cookie這三個客戶端緩存的區(qū)別 localStorage的API,g...

    timger 評論0 收藏0
  • 關(guān)于性能優(yōu)化的點(diǎn)事——函數(shù)節(jié)流

    摘要:函數(shù)節(jié)流背景中的函數(shù)大多數(shù)情況下都是由用戶主動調(diào)用觸發(fā)的除非是函數(shù)本身的實現(xiàn)不合理否則一般不會遇到跟性能相關(guān)的問題但在少數(shù)情況下函數(shù)的觸發(fā)不是由用戶直接控制的在這些場景下函數(shù)可能被非常頻繁調(diào)用而造成大的性能問題場景事件事件滾動事件共同的特征 函數(shù)節(jié)流 背景 javascript中的函數(shù)大多數(shù)情況下都是由用戶主動調(diào)用觸發(fā)的, 除非是函數(shù)本身的實現(xiàn)不合理, 否則一般不會遇到跟性能相關(guān)的問題...

    khlbat 評論0 收藏0
  • js函數(shù)點(diǎn)事

    摘要:在種函數(shù)實際上是對象,每個函數(shù)都是類型的實例。也就是說一個函數(shù)可能會有多個名字。這就是我們平時所說的函數(shù)聲明提升。函數(shù)的內(nèi)部屬性包括具體不再敘述了函數(shù)的屬性和方法函數(shù)有個屬性,和表示函數(shù)希望接收命名參數(shù)的個數(shù)。 要知道,在js中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),包含5種引用類型,分別是Object,data,Array,re請輸入代碼gExp,Function。今天我們就說Function這種...

    nanchen2251 評論0 收藏0
  • 移動端鍵盤和光標(biāo)的兼容點(diǎn)事

    摘要:解決方法如果使用頁面數(shù)據(jù)不超過一屏禁止?jié)L動,那么即使變成了頁面也不會有什么變化。 作者:@micky思 @wupq @yewq 在H5的開發(fā)中,個人的制作頁面布局習(xí)性不同,多多少少會產(chǎn)生在真機(jī)上input的光標(biāo)和鍵盤的彈出會出現(xiàn)的各種BUG,文中整理了部分遇到的問題,歡迎新增 ios移動端輸入框上浮導(dǎo)致輸入位置偏移 問題原因:遮罩層定位為fixed,當(dāng)鍵盤彈起時,ios11以及以下...

    XboxYan 評論0 收藏0
  • 移動端鍵盤和光標(biāo)的兼容點(diǎn)事

    摘要:解決方法如果使用頁面數(shù)據(jù)不超過一屏禁止?jié)L動,那么即使變成了頁面也不會有什么變化。 作者:@micky思 @wupq @yewq 在H5的開發(fā)中,個人的制作頁面布局習(xí)性不同,多多少少會產(chǎn)生在真機(jī)上input的光標(biāo)和鍵盤的彈出會出現(xiàn)的各種BUG,文中整理了部分遇到的問題,歡迎新增 ios移動端輸入框上浮導(dǎo)致輸入位置偏移 問題原因:遮罩層定位為fixed,當(dāng)鍵盤彈起時,ios11以及以下...

    Kerr1Gan 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

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