<strong id="105k0"><address id="105k0"></address></strong>

<strong id="105k0"></strong><em id="105k0"><rp id="105k0"></rp></em>
      <ruby id="105k0"></ruby>
    
    
      <strong id="105k0"></strong>

      <strong id="105k0"></strong>

    1. 歡迎您訪(fǎng)問(wèn)鄭州興邦電子股份有限公司官方網(wǎng)站!
      阿里巴巴誠信通企業(yè)
      全國咨詢(xún)熱線(xiàn):40000-63966
      興邦電子,中國水控機第一品牌

      聯(lián)系興邦電子

      全國咨詢(xún)熱線(xiàn):40000-63966

      售后:0371-55132951/55132952

      工廠(chǎng):河南省 鄭州市 高新區蓮花街電子電器產(chǎn)業(yè)園

      數據庫鎖機制

      文章出處:http://www.psychicreadingswithdeb.com 作者:興邦開(kāi)發(fā)部 人氣: 發(fā)表時(shí)間:2016年05月28日

      [文章內容簡(jiǎn)介]:數據庫鎖機制

      數據庫是一個(gè)多用戶(hù)使用的共享資源。當多個(gè)用戶(hù)并發(fā)地存取數據時(shí),在數據庫中就會(huì )產(chǎn)生多個(gè)事務(wù)同時(shí)存取同一數據的情況。若對并發(fā)操作不加控制就可能會(huì )讀取和存儲不正確的數據,破壞數據庫的一致性。

      加鎖是實(shí)現數據庫并發(fā)控制的一個(gè)非常重要的技術(shù)。當事務(wù)在對某個(gè)數據對象進(jìn)行操作前,先向系統發(fā)出請求,對其加鎖。加鎖后事務(wù)就對該數據對象有了一定的控制,在該事務(wù)釋放鎖之前,其他的事務(wù)不能對此數據對象進(jìn)行更新操作。
      鎖包括行級鎖和表級鎖

      行級鎖是一種排他鎖,防止其他事務(wù)修改此行;在使用以下語(yǔ)句時(shí),Oracle會(huì )自動(dòng)應用行級鎖:
      INSERT、UPDATE、DELETE、SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT];
      SELECT … FOR UPDATE語(yǔ)句允許用戶(hù)一次鎖定多條記錄進(jìn)行更新
      使用COMMIT或ROLLBACK語(yǔ)句釋放鎖

      表級鎖又分為5類(lèi):

      行共享 (ROW SHARE) – 禁止排他鎖定表
      行排他(ROW EXCLUSIVE) – 禁止使用排他鎖和共享鎖
      共享鎖(SHARE) - 鎖定表,對記錄只讀不寫(xiě),多個(gè)用戶(hù)可以同時(shí)在同一個(gè)表上應用此鎖
      共享行排他(SHARE ROW EXCLUSIVE) – 比共享鎖更多的限制,禁止使用共享鎖及更高的鎖
      排他(EXCLUSIVE) – 限制最強的表鎖,僅允許其他用戶(hù)查詢(xún)該表的行。禁止修改和鎖定表

      【樂(lè )觀(guān)鎖與悲觀(guān)鎖】

      所謂悲觀(guān)鎖就是基于數據庫機制實(shí)現的。比如在在使用select子句的時(shí)候加上for update,那么直到改子句的事務(wù)結束為止,任何應用都無(wú)法修改select出來(lái)的記錄。

      所謂樂(lè )觀(guān)鎖是基于應用的版本機制來(lái)實(shí)現的。一般會(huì )在表里面設計一個(gè)版本字段v(我一般會(huì )把這個(gè)字段設為timestamp)。一般的update場(chǎng)景是這樣:

      1 select a, v from tb where id=1;  

      假設得到數據是:['xxx', 11111]

      2 update tb set a='yyyy', v=systimestamp where v=11111; //注意, v一般不會(huì )在業(yè)務(wù)操作的時(shí)候修改

      這要求每一次update操作都變更版本字段,否則還是要進(jìn)程間的數據 還是會(huì )被相互覆蓋。

      樂(lè )觀(guān)鎖無(wú)法鎖定其他應用對數據的操作。

      鎖(locking)

      業(yè)務(wù)邏輯的實(shí)現過(guò)程中,往往需要保證數據訪(fǎng)問(wèn)的排他性。如在金融系統的日終結算 處理中,我們希望針對某個(gè)cut-off時(shí)間點(diǎn)的數據進(jìn)行處理,而不希望在結算進(jìn)行過(guò)程中 (可能是幾秒種,也可能是幾個(gè)小時(shí)),數據再發(fā)生變化。此時(shí),我們就需要通過(guò)一些機制來(lái)保證這些數據在某個(gè)操作過(guò)程中不會(huì )被外界修改,這樣的機制,在這里,也就是所謂 的“鎖”,即給我們選定的目標數據上鎖,使其無(wú)法被其他程序修改。 Hibernate支持兩種鎖機制:即通常所說(shuō)的“悲觀(guān)鎖(Pessimistic Locking)” 和“樂(lè )觀(guān)鎖(Optimistic Locking)”。

      本文關(guān)鍵詞:一卡通,數據庫,鎖
      回到頂部
      99久热只有精品视频在线17_精品一区二区三区自拍图片_最新国产v亚洲_久久综合九色综合久
      <strong id="105k0"><address id="105k0"></address></strong>

      <strong id="105k0"></strong><em id="105k0"><rp id="105k0"></rp></em>
        <ruby id="105k0"></ruby>
      
      
        <strong id="105k0"></strong>

        <strong id="105k0"></strong>