成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

?分布式事務(wù)鎖介紹及一般處理方法

IT那活兒 / 1204人閱讀
?分布式事務(wù)鎖介紹及一般處理方法

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。。?/strong>


目的

通過建立知識(shí)庫管理,積累、保存信息和知識(shí)資產(chǎn),為團(tuán)隊(duì)內(nèi)部信息和知識(shí)的傳播提供平臺(tái),實(shí)現(xiàn)團(tuán)隊(duì)內(nèi)知識(shí)共享,也使得企業(yè)知識(shí)得到很好的精煉和沉淀。


知識(shí)點(diǎn)描述

分布式事務(wù),簡(jiǎn)單來說,是指一個(gè)事務(wù)在本地和遠(yuǎn)程執(zhí)行,本地需要等待確認(rèn)遠(yuǎn)程的事務(wù)結(jié)束后,進(jìn)行下一步本地的操作。如通過dblink update遠(yuǎn)程數(shù)據(jù)庫的一行記錄,如果在執(zhí)行過程中網(wǎng)絡(luò)異常,或者其他事件導(dǎo)致本地?cái)?shù)據(jù)庫無法得知遠(yuǎn)程數(shù)據(jù)庫的執(zhí)行情況,此時(shí)就會(huì)發(fā)生in doublt的報(bào)錯(cuò)。
當(dāng)前的分布式事務(wù)處于Two-Phase Commit機(jī)制中的prepared階段,這個(gè)階段事務(wù)已經(jīng)在表上加鎖了,現(xiàn)在我們要訪問這些表,但事務(wù)沒有結(jié)束,一直持有鎖,導(dǎo)致訪問資源失敗報(bào)ORA-01591。分布式事務(wù)所持有的鎖之所以堵塞讀操作,是因?yàn)閛ralce不知道該顯示哪個(gè)版本的數(shù)據(jù)。當(dāng)一個(gè)分布式事務(wù)死掉時(shí),由于該事務(wù)沒有正常結(jié)束,導(dǎo)致事務(wù)持有的鎖一直沒有釋放,所以在訪問這個(gè)事務(wù)涉及的資源時(shí),申請(qǐng)不到鎖資源,所以報(bào)ORA-01591。

ORA-01591錯(cuò)誤一般是由于分布式事務(wù)造成的,造成分布式事務(wù)失敗的原因可能是庫之間的網(wǎng)絡(luò)突然中斷或者更新操作窗口會(huì)話被斷開,造成兩個(gè)庫中的事務(wù)信息不一致,導(dǎo)致有殘余的分布式事務(wù)信息未被釋放。


標(biāo)準(zhǔn)指導(dǎo)操作

3.1 分布式事務(wù)兩階段提交
兩階段提交協(xié)議可以保證數(shù)據(jù)的強(qiáng)一致性,許多分布式關(guān)系型數(shù)據(jù)管理系統(tǒng)采用此協(xié)議來完成分布式事務(wù)。
它是協(xié)調(diào)所有分布式原子事務(wù)參與者,并決定提交或取消(回滾)的分布式算法。同時(shí)也是解決一致性問題的算法。該算法能夠解決很多的臨時(shí)性系統(tǒng)故障(包括進(jìn)程、網(wǎng)絡(luò)節(jié)點(diǎn)、通信等故障),被廣泛地使用。但是,它并不能夠通過配置來解決所有的故障,在某些情況下它還需要人為的參與才能解決問題。
兩階段提交分為Prepare Phase (準(zhǔn)備階段)和Commit Phase (提交階段)
1)準(zhǔn)備階段
協(xié)調(diào)者向參與者發(fā)起指令,參與者評(píng)估自己的狀態(tài),如果參與者評(píng)估指令可以完成,則會(huì)寫redo或者undo日志(Write-Ahead Log的一種),然后鎖定資源,執(zhí)行操作,但是并不提交。
2)提交階段
如果每個(gè)參與者明確返回準(zhǔn)備成功,也就是預(yù)留資源和執(zhí)行操作成功,則協(xié)調(diào)者向參與者發(fā)起提交指令,參與者提交資源變更的事務(wù),釋放鎖定的資源;如果任何一個(gè)參與者明確返回準(zhǔn)備失敗,也就是預(yù)留資源或者執(zhí)行操作失敗,則協(xié)調(diào)者向參與者發(fā)起中止指令,參與者取消已經(jīng)變更的事務(wù),執(zhí)行undo日志,釋放鎖定的資源。
3.2 存在的問題
兩階段提交協(xié)議在準(zhǔn)備階段鎖定資源,這是一個(gè)非常損耗資源的操作,能保證強(qiáng)一致性,但是實(shí)現(xiàn)起來復(fù)雜、成本較高、不夠靈活,更重要的是它有一些致命的問題。
1)阻塞
從上面的描述來看,對(duì)于任何一次指令都必須收到明確的響應(yīng),才會(huì)繼續(xù)進(jìn)行下一步,否則處于阻塞狀態(tài),占用的資源被一直鎖定,不會(huì)被釋放。
2)單點(diǎn)故障
如果協(xié)調(diào)者宕機(jī),參與者沒有協(xié)調(diào)者指揮,則會(huì)一直阻塞,盡管可以通過選舉新的協(xié)調(diào)者替代原有協(xié)調(diào)者,但是如果協(xié)調(diào)者在發(fā)送一個(gè)提交指令后宕機(jī),而提交指令僅僅被一個(gè)參與者接收,并且參與者接收后也宕機(jī),則新上任的協(xié)調(diào)者無法處理這種情況。
3)腦裂
協(xié)調(diào)者發(fā)送提交指令,有的參與者接收到并執(zhí)行了事務(wù),有的參與者沒有接收到事務(wù)就沒有執(zhí)行事務(wù),多個(gè)參與者之間是不一致的。
4)數(shù)據(jù)狀態(tài)不確定
協(xié)調(diào)者再發(fā)出commit消息之后丟失,而唯一接收到這條消息的參與者同時(shí)也丟失了。那么即使協(xié)調(diào)者通過選舉協(xié)議產(chǎn)生了新的協(xié)調(diào)者,這條事務(wù)的狀態(tài)也是不確定的,沒人知道事務(wù)是否被已經(jīng)提交。
3.3 一般解決方法
對(duì)于分布式事務(wù)鎖一般性解決方法為對(duì)事務(wù)進(jìn)行回滾使兩者數(shù)據(jù)庫回到正常狀態(tài);Rollback force的參數(shù)是DBA_2PC_PENDING中記錄本地事務(wù)信息的編號(hào)即LOCAL_TRAN_ID。語法命令:Rollback force ‘20.13.1546896’


本文作者:陳炎亮(上海新炬王翦團(tuán)隊(duì))

本文來源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129158.html

相關(guān)文章

  • 為Java程序員金三銀四精心挑選的300余道Java面試題與答案

    摘要:為程序員金三銀四精心挑選的余道面試題與答案,歡迎大家向我推薦你在面試過程中遇到的問題我會(huì)把大家推薦的問題添加到下面的常用面試題清單中供大家參考。 為Java程序員金三銀四精心挑選的300余道Java面試題與答案,歡迎大家向我推薦你在面試過程中遇到的問題,我會(huì)把大家推薦的問題添加到下面的常用面試題清單中供大家參考。 前兩天寫的以下博客,大家比較認(rèn)可,熱度不錯(cuò),希望可以幫到準(zhǔn)備或者正在參加...

    tomorrowwu 評(píng)論0 收藏0
  • TiDB 在轉(zhuǎn)轉(zhuǎn)的業(yè)務(wù)實(shí)戰(zhàn)

    摘要:而批處理,可以復(fù)用一條簡(jiǎn)單,實(shí)現(xiàn)批量數(shù)據(jù)的寫入或更新,為系統(tǒng)帶來更低更穩(wěn)定的耗時(shí)。批處理的簡(jiǎn)要流程說明如下經(jīng)業(yè)務(wù)中實(shí)踐,使用批處理方式的寫入或更新,比常規(guī)或性能更穩(wěn)定,耗時(shí)也更低。 作者:陳維,轉(zhuǎn)轉(zhuǎn)優(yōu)品技術(shù)部 RD。 開篇 世界級(jí)的開源分布式數(shù)據(jù)庫 TiDB 自 2016 年 12 月正式發(fā)布第一個(gè)版本以來,業(yè)內(nèi)諸多公司逐步引入使用,并取得廣泛認(rèn)可。 對(duì)于互聯(lián)網(wǎng)公司,數(shù)據(jù)存儲(chǔ)的重要性不...

    hover_lew 評(píng)論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<