當(dāng)數(shù)據(jù)庫上有多個事務(wù)同時執(zhí)行的時候,就可能出現(xiàn)問題:
創(chuàng)新互聯(lián)建站是一家專業(yè)提供榕江企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都做網(wǎng)站、H5場景定制、小程序制作等業(yè)務(wù)。10年已為榕江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。為了解決這些問題,就有了“隔離級別”的概念,包括:
下面我們來解決3個問題:
示例:
在這個例子中根本不存在 id 為 1,并且 age 為 21 的記錄,事務(wù)1讀到了臟數(shù)據(jù)。
這就是臟讀,一個事務(wù)中讀到了另一個事務(wù)修改但未提交的數(shù)據(jù)。
示例:
不可重復(fù)讀就是一個事務(wù)中讀取2次同一條記錄,但每次讀取的結(jié)果不同。
示例:
幻讀就是在一個事務(wù)中同樣的查詢條件產(chǎn)生取得的結(jié)果不同,有新紀(jì)錄產(chǎn)生了。
幻讀其實就是不可重復(fù)讀的一個特殊情況。
下面假設(shè)一個場景,看看不同隔離級別時的返回結(jié)果。
有一個表T
,有一個int型字段c
,包含一條記錄1
。
不同隔離級別下的值:
V1=2,此級別下事務(wù)2的更改可以被事務(wù)1看到。
V2 和 V3 同樣為 2。
V1=1,V2=2,此級別下事務(wù)2未提交的變更事務(wù)1看不到,提交后事務(wù)1可以看到。
V3=2。
V1=1,V2=1,此級別下事務(wù)1執(zhí)行期間看到的值一致。
V3=2。
事務(wù)2會被鎖住,等待事務(wù)1提交。V1=1,V2=1,V3=2。
不同事務(wù)可以看到不同的值,這是怎么實現(xiàn)的呢?
有一個重要概念 ”回滾日志”。
MySQL中,每條記錄在更新的時候都會記錄一條回滾操作記錄,通過回滾操作,可以得到以前某一狀態(tài)的值。
例如一個值從1依次修改到4,回滾日志就類似如下的形式:
從1改為2 <- 從3改為2 <- 從4改為3 <- 當(dāng)前值為4
還有一個重要概念 “視圖 read-view“,事務(wù)啟動時就會創(chuàng)建視圖,與回滾日志對應(yīng)起來。
例如3個事務(wù),產(chǎn)生了3個視圖 A B C,和回滾日志的對應(yīng)關(guān)系如下:
那么事務(wù)A取得的值始終為1,其他事務(wù)同理。即使有一個新的線程把值從4改成了5,也對其他事務(wù)沒影響。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。
網(wǎng)頁題目:一文教你快速理解MySQL事務(wù)隔離級別-創(chuàng)新互聯(lián)
文章來源:http://jinyejixie.com/article12/cceggc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站導(dǎo)航、全網(wǎng)營銷推廣、做網(wǎng)站、品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容