亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

三言兩語RR與RC那點事

IT那活兒 / 2399人閱讀
三言兩語RR與RC那點事

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


01


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


02


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

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

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

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

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


03


這里可能有些同學會有疑問,在RR級別下,T3時刻將T減1是不是意味著T2時刻的事務(wù)變更會丟失?
如下:
針對這個問題,數(shù)據(jù)庫引擎當然沒有那么小白,這里適用一條新的規(guī)則, 發(fā)生DML時,需要讀取已提交事務(wù)的最新值,這個讀一般稱為"當前讀"(current read)。
案例中也就是T3發(fā)起set DML時需要獲取已提交的最新值也就是T=2后,再進行運算,這就不存在事務(wù)丟失的風險了,需要注意如果事務(wù)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),比如信用卡賬戶表與信用卡消費明細表。
采取RC隔離級別時,如果不將數(shù)據(jù)靜止化,對賬的事務(wù)周期內(nèi),賬戶表余額或明細表一直發(fā)生變更,那整個賬本永遠也無法對賬一致。
另外比如mysqldump之類的邏輯備份,使用--single-transaction時自動設(shè)置會話事務(wù)為RR,其不僅僅是備份出數(shù)據(jù),同樣需要保證數(shù)據(jù)與數(shù)據(jù)之間的邏輯一致性。

END



本文作者:胡 杰

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

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

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

相關(guān)文章

  • 容器化管理平臺存儲點事

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

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

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

    timger 評論0 收藏0
  • 關(guān)于性能優(yōu)化的點事——函數(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ù)點事

    摘要:在種函數(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
  • 移動端鍵盤和光標的兼容點事

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

    XboxYan 評論0 收藏0
  • 移動端鍵盤和光標的兼容點事

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

    Kerr1Gan 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

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