-
死鎖拓展U鎖:
單元事務(wù)有寫(xiě)鎖升級(jí)為寫(xiě)鎖,都是讀鎖還是讀鎖
查看全部 -
死鎖解決方案:
避免死鎖,碰撞檢測(cè),等鎖超時(shí)
查看全部 -
要保證事務(wù)的安全,可以使用序列化讀寫(xiě):排隊(duì)法??梢员WC事務(wù)的安全,但是這樣會(huì)把讀寫(xiě)性能降到最低。為了提高性能有如下優(yōu)化:
?? ?? ?所以需要針對(duì)同一個(gè)事務(wù)單元進(jìn)行控制。就是只需保證一個(gè)事務(wù)所涉及的數(shù)據(jù)不被訪問(wèn)即可,對(duì)于其他的數(shù)據(jù)可以不控制。那么對(duì)于其他事務(wù)來(lái)說(shuō),只要不操作已有事務(wù)的數(shù)據(jù),就可以并行。
?? ??? ? 如果同時(shí)有兩個(gè)或兩個(gè)以上的事都是讀讀,那么讀讀之間也是可以并行的查看全部 -
總結(jié)一下 事務(wù)的隔離性是通過(guò)數(shù)據(jù)庫(kù)鎖的機(jī)制實(shí)現(xiàn)的,持久性通過(guò)redo log(重做日志)來(lái)實(shí)現(xiàn),原子性和一致性通過(guò)Undo log來(lái)實(shí)現(xiàn)。 原文鏈接 https://blog.csdn.net/qq_36142146/article/details/85247960查看全部
-
ACID的概念拓展:查看全部
-
單機(jī)事務(wù)調(diào)優(yōu)原則
查看全部 -
按照我的理解:不考慮MVCC,假設(shè)沒(méi)有U鎖,按照講解的理解,根據(jù)示例sql,其在數(shù)據(jù)庫(kù)內(nèi)部是先讀鎖、再寫(xiě)鎖。這樣為了保證數(shù)據(jù)是正確的,需要在可重復(fù)讀的級(jí)別,這樣數(shù)據(jù)更新不會(huì)錯(cuò)誤,但是同時(shí)讀的時(shí)候會(huì)出現(xiàn)死鎖。如果在提交讀的級(jí)別,同時(shí)讀不會(huì)出現(xiàn)死鎖,但是已經(jīng)算是臟讀了,無(wú)法保證數(shù)據(jù)更新是正確的了。使用U鎖,update語(yǔ)句,表面上我們就可以簡(jiǎn)單認(rèn)為是一個(gè)寫(xiě)鎖了,重復(fù)讀級(jí)別不會(huì)出現(xiàn)死鎖,在提交讀級(jí)別也能保證更新的正確性。u鎖,其實(shí)是在讀寫(xiě)鎖的基礎(chǔ)上,應(yīng)該是在可重復(fù)讀和提交讀的級(jí)別上的
查看全部 -
隔離性和鎖的關(guān)系
查看全部 -
1.排它鎖 (誰(shuí)都不能進(jìn)來(lái))
序列化:什么操作都不能并行
2.讀寫(xiě)鎖 (讀鎖不能被升級(jí)成寫(xiě)鎖) 不能寫(xiě)了當(dāng)然能每次讀的時(shí)候讀到的數(shù)據(jù)一致
可重復(fù)讀 :讀讀可并行
3.讀寫(xiě)鎖 (讀鎖能被升級(jí)成寫(xiě)鎖) 在讀的時(shí)候能被寫(xiě)入數(shù)據(jù),讀到的數(shù)據(jù)就不一致了
讀已提交:讀讀并行 讀寫(xiě)并行
4.寫(xiě)鎖
讀未提交 :讀讀并行 讀寫(xiě)并行 寫(xiě)讀并行
寫(xiě)內(nèi)存?
group commit
宕機(jī)重啟recovery 查詢(xún)?nèi)罩净謴?fù)
查看全部 -
一致性:consistency,保證能看到系統(tǒng)內(nèi)的所有更改,Can(happen before)
隔離性:以性能為理由,對(duì)一致性的破壞。
????????????? 序列化讀寫(xiě)(serializale)
????????????? 排它鎖
????????????? 讀寫(xiě)鎖:可重復(fù)讀(repeatable read),讀鎖不能被寫(xiě)鎖升級(jí),只能做到讀讀可并行
????????????????????????????讀已提交(read committed),讀讀并行,讀寫(xiě)并行(寫(xiě)讀還不可以并行)
????????????????????????????讀未提交(read uncommitted),只加寫(xiě)鎖,讀不加鎖,可實(shí)現(xiàn)讀讀并行,讀寫(xiě)并行,寫(xiě)讀并行
問(wèn)題:可能讀到寫(xiě)過(guò)程中的數(shù)據(jù)
隔離性小結(jié):SQL 92 標(biāo)準(zhǔn)定義隔離性,序列化,可重復(fù)讀,讀已提交,讀未提交。
隔離性擴(kuò)展:快照(snapshot isolation),多版本并發(fā)空知MVCC,multi-version concurrency control
????????????? ?
查看全部 -
原子性:atomicity,一個(gè)事務(wù)要么同時(shí)成功,要么同時(shí)失敗
查看全部 -
MVCC:multi-version concurrency control 多版本并發(fā)控制
能夠做到:寫(xiě)不阻塞讀
事務(wù)的先后順序:邏輯時(shí)間戳,在oracle中用SCN,在Innodb中使用Trx_id,它僅僅是一個(gè)記錄先后順序,不是物理時(shí)間戳。
故障恢復(fù):業(yè)務(wù)屬性不匹配,系統(tǒng)崩潰,一般會(huì)有一個(gè)recovery點(diǎn)進(jìn)行恢復(fù)
死鎖與死鎖檢測(cè):兩個(gè)線程,不同方向,相同資源。即兩個(gè)或多個(gè)線程,從不同方向,對(duì)同一個(gè)資源進(jìn)行加鎖控制,那么一定會(huì)產(chǎn)生死鎖。
死鎖解決方法:死鎖避免;碰撞檢測(cè)(最常用);等鎖超時(shí);
查看全部 -
事務(wù):鎖和并發(fā)的結(jié)合體
ACID:Atomicity原子性,一致性Consistency,隔離性Isolation,持久性 Durability
排隊(duì)法:序列化讀寫(xiě),優(yōu)勢(shì):不需要沖突控制;劣勢(shì):慢速設(shè)備
排他鎖:針對(duì)同一個(gè)單元的訪問(wèn)進(jìn)行控制
讀寫(xiě)鎖:針對(duì)讀讀場(chǎng)景可以做優(yōu)化
查看全部 -
網(wǎng)絡(luò)帶走的:(去中心化);共享數(shù)據(jù)困難;貢多的延遲;確定性喪失;
去中心化的結(jié)果就是共享數(shù)據(jù)困難,需要用消息傳遞方式進(jìn)行數(shù)據(jù)共享。但是消息傳遞必然存在延遲,本機(jī)中進(jìn)程之間消息傳遞的延遲還可以忍受,但是如果是在網(wǎng)絡(luò)中進(jìn)行消息傳遞,則會(huì)有更多的延遲,并且有確定性數(shù)據(jù)喪失,為了降低確定性喪失數(shù)據(jù),則需要等待更多的延遲,更可靠的傳遞消息協(xié)議。
查看全部 -
網(wǎng)絡(luò)帶來(lái)的:(去中心化);理論上無(wú)限的擴(kuò)展能力;理論上無(wú)限的數(shù)據(jù)安全性;理論上無(wú)限的服務(wù)可用性
查看全部 -
事務(wù):讓很多步驟操作順序發(fā)生,多進(jìn)程/線程看上去就像是一步操作
事務(wù):方便理解,不會(huì)讓計(jì)算機(jī)出現(xiàn)故障;但是代價(jià)是有加鎖和去鎖的操作
進(jìn)程+數(shù)據(jù) = 圖靈機(jī)操作
查看全部
舉報(bào)