主頁(yè) > 知識(shí)庫(kù) > mysql 詳解隔離級(jí)別操作過(guò)程(cmd)

mysql 詳解隔離級(jí)別操作過(guò)程(cmd)

熱門標(biāo)簽:遂寧400電話申請(qǐng) 地圖標(biāo)注直通車 dq8 全地圖標(biāo)注 哈爾濱云外呼系統(tǒng)運(yùn)營(yíng)商 邯鄲400電話注冊(cè)辦理 永州智能外呼系統(tǒng) 趙縣地圖標(biāo)注 電銷機(jī)器人市場(chǎng)價(jià) 南寧智能電銷機(jī)器人價(jià)格

讀未提交示例操作過(guò)程-Read uncommitted

1、打開(kāi)兩個(gè)MySql的命令提示行,均進(jìn)入相同數(shù)據(jù)庫(kù),并檢查當(dāng)前表內(nèi)容為相同數(shù)據(jù)如下:

2、在A、B兩端執(zhí)行select @@tx_isolation;檢查當(dāng)前默認(rèn)的隔離級(jí)別別,可以發(fā)現(xiàn)都是

Repeatable Read –可重復(fù)讀-(在當(dāng)前事務(wù)內(nèi),重復(fù)讀取第一次讀取過(guò)的數(shù)據(jù)就叫可重復(fù)讀。)

3、修改A端的隔離級(jí)別為readuncommitted –讀未提交。意思是可以讀取別人沒(méi)有提交的數(shù)據(jù)。

set transactionisolation level read uncommitted;

在綠色的MySql5.5上請(qǐng)執(zhí)行:

Set sessiontransaction isolation level read uncommitted;

   然后再查看是否已經(jīng)發(fā)生改變:

4、在A、B兩端都開(kāi)啟事務(wù)

starttransaction;

5、在B端修改一行數(shù)據(jù)如:

update stud setname='Jhon' where id=1;

   其后在A端執(zhí)行查詢:select * from stud;

6、此時(shí)B端再次執(zhí)行回滾操作

Rollback;

   再在A端進(jìn)行查詢,結(jié)果發(fā)現(xiàn)數(shù)據(jù)又回到了之前的數(shù)據(jù)。這就是臟讀

7、對(duì)于B端寫入的新數(shù)據(jù),如果沒(méi)有提交A端也一樣能查詢到,這叫幻讀。

 讀已提交操作過(guò)程:-read COMMITTED

1、 檢查A、B兩端是否一致:

2、修改A端(左)的隔離級(jí)別為readcommitted;

set transactionisolation level read committed;

   在A端開(kāi)啟事務(wù):

   starttransaction;

   在B端開(kāi)啟事務(wù)

3、在A端進(jìn)行查詢:

Select * fromstud;

在B端修改一行記錄并提交

Update stud setname='itcast' where id=1;

再回到A端進(jìn)行查詢,發(fā)現(xiàn)在同一個(gè)事務(wù)內(nèi),兩次查詢的結(jié)果不一樣:

 可重復(fù)讀示例Repeatable Read

1、查看A端的隔離級(jí)別是否為Repeatableread級(jí)別:

Select@@tx_isolation;

2、先在A端在開(kāi)啟的事務(wù)內(nèi)進(jìn)行查詢。

然后在B端修改數(shù)據(jù)庫(kù)的內(nèi)容。

最后再在A端的同一事務(wù)內(nèi)進(jìn)行查詢,發(fā)現(xiàn)結(jié)果一致。

 Serializable是最高級(jí)的隔離級(jí)別

1、在A端設(shè)置隔離級(jí)別為Serializable

set transactionisolation level serializable;

在A端開(kāi)啟一個(gè)事務(wù)-并對(duì)stud表進(jìn)行查詢。

在B端開(kāi)啟一個(gè)事務(wù),并寫入一行記錄。此時(shí)發(fā)現(xiàn)B的代碼并沒(méi)有執(zhí)行,因?yàn)樗诘華提交之后它才執(zhí)行。

類似于線程同步的概念

 這四種隔離級(jí)別采取不同的鎖類型來(lái)實(shí)現(xiàn),若讀取的是同一個(gè)數(shù)據(jù)的話,就容易發(fā)生問(wèn)題。例如:

臟讀(Drity Read):某個(gè)事務(wù)已更新一份數(shù)據(jù),另一個(gè)事務(wù)在此時(shí)讀取了同一份數(shù)據(jù),由于某些原因,前一個(gè)RollBack(回滾)了操作,則后一個(gè)事務(wù)所讀取的數(shù)據(jù)就會(huì)是不正確的。

不可重復(fù)讀(Non-repeatable read):在一個(gè)事務(wù)的兩次查詢之中數(shù)據(jù)不一致,這可能是兩次查詢過(guò)程中間插入了一個(gè)事務(wù)更新的原有的數(shù)據(jù)。

幻讀(Phantom Read):在一個(gè)事務(wù)的兩次查詢中數(shù)據(jù)筆數(shù)不一致,例如有一個(gè)事務(wù)查詢了幾列(Row)數(shù)據(jù),而另一個(gè)事務(wù)卻在此時(shí)插入了新的幾列數(shù)據(jù),先前的事務(wù)在接下來(lái)的查詢中,就會(huì)發(fā)現(xiàn)有幾列數(shù)據(jù)是它先前所沒(méi)有的

 感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • 深入理解Mysql的四種隔離級(jí)別
  • MySQL四種事務(wù)隔離級(jí)別詳解
  • 通過(guò)實(shí)例分析MySQL中的四種事務(wù)隔離級(jí)別
  • Mysql事務(wù)隔離級(jí)別原理實(shí)例解析
  • 詳解MySQL中事務(wù)隔離級(jí)別的實(shí)現(xiàn)原理
  • mysql隔離級(jí)別詳解及示例

標(biāo)簽:浙江 定西 張家界 鄂州 阿里 南寧 中衛(wèi) 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql 詳解隔離級(jí)別操作過(guò)程(cmd)》,本文關(guān)鍵詞  mysql,詳解,隔離,級(jí)別,操作,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql 詳解隔離級(jí)別操作過(guò)程(cmd)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于mysql 詳解隔離級(jí)別操作過(guò)程(cmd)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章