第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

一致性問題


老師你好。

你這里關(guān)于一致性的定義是"能保證看到系統(tǒng)內(nèi)的所有更改"

假設(shè)我們有兩個事務(wù):

事務(wù)A是一個讀事務(wù):

begin transaction

select * from table1 where id = 1;

commit;

事務(wù)B是一個寫事務(wù):

begin transaction

update table1 set name=newName where id = 1;

commit;


A事務(wù)先開始,B事務(wù)后執(zhí)行。如圖中所示,在事務(wù)A執(zhí)行過程中事務(wù)B已經(jīng)commit。

http://img1.sycdn.imooc.com//5a6e959300010b7a08060459.jpg

那么對于事務(wù)A而言在mvcc(mysql innodb)機(jī)制下能看到事務(wù)B更改的數(shù)據(jù)嗎。

正在回答

1 回答

if (在事務(wù)A執(zhí)行過程中事務(wù)B已經(jīng)commit){
????如果你可以確定? 那么是一定可以讀出來的?

}else if(但是基本是我們不能確定事務(wù)A執(zhí)行過程中事務(wù)B是否commit){? ?

????if(如果mvcc設(shè)置的read commit?){

? ? 你說了?A事務(wù)先開始,B事務(wù)后執(zhí)行 因?yàn)閁鎖的原因? 兩個事件是并行的.

????讀提交時,讀事務(wù)每次都讀取undo log中最近的版本,因此兩次對同一字段的讀可能讀到不同的數(shù)據(jù)(不可重復(fù)讀),但能保證每次都讀到最新的數(shù)據(jù)。

??????所以可以讀出來? 即用log實(shí)現(xiàn)視點(diǎn)2(雖然還沒Commit)

????}else if(如果mvcc設(shè)置的Repeatable read ){

? ??????每次都讀取指定的版本,這樣保證不會產(chǎn)生不可重復(fù)讀,但讀不到最新的數(shù)據(jù)

????????所以可以讀不出來? 即視點(diǎn)1

????}

}

當(dāng)然這一切都是假定在txA和txB同時進(jìn)行的前提下?

?

????



0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
在線分布式數(shù)據(jù)庫原理與實(shí)踐
  • 參與學(xué)習(xí)       42348    人
  • 解答問題       54    個

一起學(xué)習(xí)事務(wù)與分布式事務(wù)原理與實(shí)踐干貨,歡迎收藏

進(jìn)入課程
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號