国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

數(shù)據(jù)庫之事務(wù)與并發(fā)控制

aaron / 1896人閱讀

摘要:悲觀鎖非常影響并發(fā)性能,所以謹(jǐn)慎使用樂觀鎖假定當(dāng)前事務(wù)操縱數(shù)據(jù)資源時(shí),不會(huì)有其他事務(wù)同時(shí)訪問該數(shù)據(jù)資源,樂觀鎖使用由程序邏輯控制的技術(shù)來避免可能出現(xiàn)的并發(fā)問題。讀取出數(shù)據(jù)時(shí),將此版本號(hào)一同讀出,之后更新時(shí),對(duì)此版本號(hào)加一。

一.事務(wù)的特性(ACID)

1.原子性:單個(gè)或多個(gè)操作為一個(gè)整體,要么全執(zhí)行,要么全不執(zhí)行(回滾)
2.一致性:事務(wù)執(zhí)行是從一個(gè)一致性狀態(tài)轉(zhuǎn)為另一個(gè)一致性狀態(tài)
3.隔離性:一個(gè)事務(wù)在提交前對(duì)數(shù)據(jù)的修改對(duì)于其它事務(wù)不可見
4.持久性:事務(wù)一旦提交對(duì)數(shù)據(jù)的改變是永久的

二.并發(fā)事務(wù)可能導(dǎo)致的問題

1.丟失數(shù)據(jù)修改 (修改的數(shù)據(jù)被其它線程事務(wù)覆蓋)
2.臟讀(B事務(wù)讀取了A事務(wù)尚未提交的數(shù)據(jù),且A事務(wù)回滾數(shù)據(jù))
3.不可重復(fù)讀(一個(gè)事務(wù)中兩次讀取的數(shù)據(jù)內(nèi)容不一致,重點(diǎn)在update)
4.幻讀(一個(gè)事務(wù)中兩次讀取的數(shù)據(jù)量不一致,重點(diǎn)在insert,delete)

三.事務(wù)并發(fā)訪問問題的解決方式 1.鎖

1.1 共享鎖和排他鎖

(1)共享鎖(S鎖,讀鎖):本事務(wù)只可進(jìn)行讀操作,其它事務(wù)加S鎖也可讀
(2)排他鎖(x鎖,寫鎖):本事務(wù)可進(jìn)行讀寫,不允許其它事務(wù)加鎖和操作
(3)更新所(u鎖):防止通常形式的死鎖,兩個(gè)擁有共享鎖的事務(wù)要同時(shí)更新數(shù)據(jù)時(shí),需要將共享鎖轉(zhuǎn)換為排他鎖,所以他們都需要X鎖并且要等待對(duì)方釋放s鎖(x鎖和其它事務(wù)的S鎖不兼容),會(huì)發(fā)生死鎖

1.2 臨時(shí)鎖與持續(xù)鎖

 鎖的時(shí)效性,指明加鎖生效期是當(dāng)前語句結(jié)束還是當(dāng)前事務(wù)結(jié)束

1.3表級(jí)鎖和行級(jí)鎖

 鎖的粒度,指明加鎖的對(duì)象是當(dāng)前表還是當(dāng)前行
 

1.4樂觀鎖和悲觀鎖
這兩種鎖的說法,主要是對(duì)“是否真正在數(shù)據(jù)庫層面加鎖”進(jìn)行討論。
(1)悲觀鎖:悲觀鎖假定當(dāng)前事務(wù)操縱數(shù)據(jù)資源時(shí),肯定還會(huì)有其他事務(wù)同時(shí)訪問該數(shù)據(jù)資源,為了避免當(dāng)前事務(wù)操作受到影響,悲觀鎖需使用數(shù)據(jù)庫的鎖機(jī)制實(shí)現(xiàn)。java中的synchronized鎖就是悲觀鎖。悲觀鎖非常影響并發(fā)性能,所以謹(jǐn)慎使用
(2)樂觀鎖假定當(dāng)前事務(wù)操縱數(shù)據(jù)資源時(shí),不會(huì)有其他事務(wù)同時(shí)訪問該數(shù)據(jù)資源,樂觀鎖使用由程序邏輯控制的技術(shù)來避免可能出現(xiàn)的并發(fā)問題。最常用的方式是基于數(shù)據(jù)版本記錄機(jī)制實(shí)現(xiàn)(一般是通過為數(shù)據(jù)庫表增加一個(gè) “version” 字段來實(shí)現(xiàn)。讀取出數(shù)據(jù)時(shí),將此版本號(hào)一同讀出,之后更新時(shí),對(duì)此版本號(hào)加一。此時(shí),將提交數(shù)據(jù)的版本數(shù)據(jù)與數(shù)據(jù)庫表對(duì)應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對(duì),如果提交的數(shù)據(jù)版本號(hào)大于數(shù)據(jù)庫表當(dāng)前版本號(hào),則予以更新,否則認(rèn)為是過期數(shù)據(jù))所以不能避免臟讀問題

2.設(shè)置事務(wù)的隔離級(jí)別
(1) 讀未提交:事務(wù)寫阻塞其它事務(wù)的寫不阻塞讀(加“持續(xù)-X鎖”實(shí)現(xiàn))
      ---避免丟失數(shù)據(jù)修改
      
(2)讀已提交:事務(wù)寫會(huì)阻塞其它事務(wù)的讀和寫(寫操作加“持續(xù)-X”鎖,讀操作加“臨時(shí)-S鎖”實(shí)現(xiàn))
     ---避免丟失數(shù)據(jù)修改和臟讀
     
(3)可重復(fù)讀:事務(wù)讀會(huì)阻塞其它事務(wù)的寫,不會(huì)阻塞讀,事務(wù)寫會(huì)阻塞其它事務(wù)讀寫(寫操作加“持續(xù)-X”鎖,讀操作加“持續(xù)-S鎖”實(shí)現(xiàn))    
     ---避免丟失數(shù)據(jù)修改和臟讀和不可重復(fù)讀幻讀
     
(4)串行化:事務(wù)的最高級(jí)別,在每個(gè)讀的數(shù)據(jù)行上,加上鎖,使之不可能相互沖突,因此,會(huì)導(dǎo)致大量的超時(shí)現(xiàn)象
    ---解決了所有問題
   

3.三級(jí)加鎖協(xié)議
   (1)一級(jí)加鎖協(xié)議:讀數(shù)據(jù)不加鎖,修改數(shù)據(jù)前加X鎖(解決丟失數(shù)據(jù)修改)
   (2)二級(jí)加鎖協(xié)議:讀取時(shí)加s鎖,修改時(shí)加x鎖(解決丟失數(shù)據(jù)修改+臟讀)
   (3)三級(jí)枷鎖協(xié)議:全程加x鎖和s鎖(解決所有問題)

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/17748.html

相關(guān)文章

  • 關(guān)于MySQL的知識(shí)點(diǎn)面試常見問題都在這里

    摘要:但是這將嚴(yán)重影響程序的性能。垂直分區(qū)的優(yōu)點(diǎn)在于可以使得行數(shù)據(jù)變小,在查詢時(shí)減少讀取的數(shù),減少次數(shù)。此外,垂直分區(qū)可以簡化表的結(jié)構(gòu),易于維護(hù)。垂直分區(qū)的缺點(diǎn)在于主鍵會(huì)出現(xiàn)冗余,需要管理冗余列,并會(huì)引起操作,可以通過在應(yīng)用層進(jìn)行來解決。 Java面試通關(guān)手冊(cè)(Java學(xué)習(xí)指南,歡迎Star,會(huì)一直完善下去,歡迎建議和指導(dǎo)):https://github.com/Snailclimb/Jav...

    LeoHsiun 評(píng)論0 收藏0
  • 深入解析 PostgreSQL 系列并發(fā)控制事務(wù)機(jī)制

    摘要:深入解析系列之并發(fā)控制與事務(wù)機(jī)制并發(fā)控制旨在針對(duì)數(shù)據(jù)庫中對(duì)事務(wù)并行的場(chǎng)景,保證中的一致性與隔離。啟動(dòng)并執(zhí)行第一個(gè)命令。事務(wù)管理器分配,并返回事務(wù)快照,因?yàn)檎谶M(jìn)行中。意味著該行由另一個(gè)并發(fā)事務(wù)更新,并且其事務(wù)尚未終止。 showImg(https://segmentfault.com/img/remote/1460000018081793); 深入解析 PostgreSQL 系列整理...

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

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

0條評(píng)論

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