• <bdo id="i0k2q"><xmp id="i0k2q">
      • <menu id="i0k2q"><em id="i0k2q"></em></menu>
        歡迎您訪問鄭州興邦電子股份有限公司官方網(wǎng)站!
        阿里巴巴誠信通企業(yè)
        全國咨詢熱線:40000-63966
        興邦電子,中國水控機(jī)第一品牌

        聯(lián)系興邦電子

        全國咨詢熱線:40000-63966

        售后:0371-55132951/55132952

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

        數(shù)據(jù)庫鎖機(jī)制

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

        [文章內(nèi)容簡介]:數(shù)據(jù)庫鎖機(jī)制

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

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

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

        表級鎖又分為5類:

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

        【樂觀鎖與悲觀鎖】

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

        所謂樂觀鎖是基于應(yīng)用的版本機(jī)制來實(shí)現(xiàn)的。一般會在表里面設(shè)計(jì)一個版本字段v(我一般會把這個字段設(shè)為timestamp)。一般的update場景是這樣:

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

        假設(shè)得到數(shù)據(jù)是:['xxx', 11111]

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

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

        樂觀鎖無法鎖定其他應(yīng)用對數(shù)據(jù)的操作。

        鎖(locking)

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

        本文關(guān)鍵詞:一卡通,數(shù)據(jù)庫,鎖
        回到頂部
        亚洲天堂国产视频,在线观看黄V免费网站免费,国产自无码视频在线观看手机,亚洲AV无码乱码国产精品9 亚洲96在线观看 免费三级片中文字幕无码
      • <bdo id="i0k2q"><xmp id="i0k2q">
          • <menu id="i0k2q"><em id="i0k2q"></em></menu>