中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

一文教你快速理解MySQL事務(wù)隔離級(jí)別-創(chuàng)新互聯(lián)

當(dāng)數(shù)據(jù)庫(kù)上有多個(gè)事務(wù)同時(shí)執(zhí)行的時(shí)候,就可能出現(xiàn)問(wèn)題:

創(chuàng)新互聯(lián)建站是一家專業(yè)提供榕江企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都做網(wǎng)站、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為榕江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
  • 臟讀(dirty read)
  • 不可重復(fù)讀(non-repeatable read)
  • 幻讀(phantom read)

為了解決這些問(wèn)題,就有了“隔離級(jí)別”的概念,包括:

  • 讀未提交的(read uncommitted)
  • 讀已提交的(read committed)
  • 可重復(fù)讀(repeatable read)
  • 串行化(serializable)

下面我們來(lái)解決3個(gè)問(wèn)題:

  1. 臟讀、不可重復(fù)讀、幻讀是什么意思?
  2. 每個(gè)隔離級(jí)別是什么含義?
  3. 事務(wù)隔離是怎么實(shí)現(xiàn)的?

事務(wù)同步問(wèn)題

(1)臟讀(dirty read)

示例:

一文教你快速理解 MySQL 事務(wù)隔離級(jí)別

在這個(gè)例子中根本不存在 id 為 1,并且 age 為 21 的記錄,事務(wù)1讀到了臟數(shù)據(jù)。

這就是臟讀,一個(gè)事務(wù)中讀到了另一個(gè)事務(wù)修改但未提交的數(shù)據(jù)。

(2)不可重復(fù)讀(non-repeatable read)

示例:

一文教你快速理解 MySQL 事務(wù)隔離級(jí)別

不可重復(fù)讀就是一個(gè)事務(wù)中讀取2次同一條記錄,但每次讀取的結(jié)果不同。

(3)幻讀(phantom read)

示例:

一文教你快速理解 MySQL 事務(wù)隔離級(jí)別

幻讀就是在一個(gè)事務(wù)中同樣的查詢條件產(chǎn)生取得的結(jié)果不同,有新紀(jì)錄產(chǎn)生了。

幻讀其實(shí)就是不可重復(fù)讀的一個(gè)特殊情況。

事務(wù)隔離級(jí)別

  • 讀未提交的(read uncommitted)是指一個(gè)事務(wù)還沒(méi)有提交時(shí),它所做的變更能夠被其他事務(wù)看到。
  • 讀已提交的(read committed)是指一個(gè)事務(wù)只有在提交之后,它所做的變更才能被其他事務(wù)看到。
  • 可重復(fù)讀(repeatable read)是指一個(gè)事務(wù)中看到的數(shù)據(jù)始終是一致的。
  • 串行化(serializable)會(huì)為記錄加鎖,出現(xiàn)鎖沖突時(shí),后邊的事務(wù)必須等待前邊的事務(wù)執(zhí)行完成才能繼續(xù)。

下面假設(shè)一個(gè)場(chǎng)景,看看不同隔離級(jí)別時(shí)的返回結(jié)果。

有一個(gè)表T,有一個(gè)int型字段c,包含一條記錄1。

一文教你快速理解 MySQL 事務(wù)隔離級(jí)別

不同隔離級(jí)別下的值:

  • 隔離級(jí)別為讀未提交的

V1=2,此級(jí)別下事務(wù)2的更改可以被事務(wù)1看到。

V2 和 V3 同樣為 2。

  • 隔離級(jí)別為讀已提交的

V1=1,V2=2,此級(jí)別下事務(wù)2未提交的變更事務(wù)1看不到,提交后事務(wù)1可以看到。

V3=2。

  • 隔離級(jí)別為可重復(fù)讀

V1=1,V2=1,此級(jí)別下事務(wù)1執(zhí)行期間看到的值一致。

V3=2。

  • 隔離級(jí)別為串行化

事務(wù)2會(huì)被鎖住,等待事務(wù)1提交。V1=1,V2=1,V3=2。

事務(wù)隔離的實(shí)現(xiàn)

不同事務(wù)可以看到不同的值,這是怎么實(shí)現(xiàn)的呢?

有一個(gè)重要概念 ”回滾日志”。

MySQL中,每條記錄在更新的時(shí)候都會(huì)記錄一條回滾操作記錄,通過(guò)回滾操作,可以得到以前某一狀態(tài)的值。

例如一個(gè)值從1依次修改到4,回滾日志就類似如下的形式:

從1改為2 <- 從3改為2 <- 從4改為3 <- 當(dāng)前值為4

還有一個(gè)重要概念 “視圖 read-view“,事務(wù)啟動(dòng)時(shí)就會(huì)創(chuàng)建視圖,與回滾日志對(duì)應(yīng)起來(lái)。

例如3個(gè)事務(wù),產(chǎn)生了3個(gè)視圖 A B C,和回滾日志的對(duì)應(yīng)關(guān)系如下:

一文教你快速理解 MySQL 事務(wù)隔離級(jí)別

那么事務(wù)A取得的值始終為1,其他事務(wù)同理。即使有一個(gè)新的線程把值從4改成了5,也對(duì)其他事務(wù)沒(méi)影響。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。

網(wǎng)頁(yè)題目:一文教你快速理解MySQL事務(wù)隔離級(jí)別-創(chuàng)新互聯(lián)
文章來(lái)源:http://www.rwnh.cn/article12/cceggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站導(dǎo)航全網(wǎng)營(yíng)銷推廣、做網(wǎng)站品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
高密市| 辽中县| 阿克苏市| 祁东县| 肇庆市| 水城县| 湖南省| 巴彦县| 乐都县| 栾城县| 金阳县| 大港区| 保靖县| 衢州市| 嘉禾县| 疏附县| 昭觉县| 汉阴县| 佛冈县| 杨浦区| 司法| 应用必备| 蒙城县| 武宁县| 株洲县| 沁源县| 平邑县| 鄂州市| 呼伦贝尔市| 佛山市| 安乡县| 天峻县| 雷波县| 海丰县| 遂溪县| 崇州市| 西昌市| 兴义市| 民勤县| 集贤县| 论坛|