<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
    Oracle中的鎖
    ?
    ??? Oracle中的鎖可以分為三類:DDL鎖DML鎖內(nèi)部鎖
    ?
    ??? 基本上所有的鎖都可以由Oracle內(nèi)部自動創(chuàng)建和釋放,但是其中的DDL和DML鎖是可以通過命令進行直接或者間接的管理的,只有內(nèi)部鎖是必須有Oracle自動管理。
    ?
    ??? 1、內(nèi)部鎖(Latch)--也叫閂
    ?
    ??? 由Oracle自動管理,以保護內(nèi)部數(shù)據(jù)庫結(jié)構(gòu),例如數(shù)據(jù)文件等。比如Oracle要把用戶更新的數(shù)據(jù)寫入緩沖區(qū),這時候Oracle就會在該緩沖區(qū)上加上latch,用來防止DBWR把他寫出到磁盤,因為如果沒有這個Latch,DBWR會把一半新一半老沒有用的數(shù)據(jù)寫到磁盤上。
    ?
    ??? 2、DDL鎖
    ?
    ??? 在使用Create、Truncate、Alter時自動創(chuàng)建,以確保在執(zhí)行過程中沒有其他事務對資源進行訪問。
    ?
    ??? 3、DML鎖
    ?
    ??? DML鎖在事務開始時創(chuàng)建,在事務提交或回滾是釋放。ROLLBACK SAVEPOINT同
    ?
    ?
    鎖的模式
    ?
    ??? Oracle中的鎖可以分為以下幾種模式:共享鎖(S)排他鎖(X)行級共享鎖(RS)行級排他鎖(RX)共享行級排他鎖(SRX)
    ?
    ??? 其中RS鎖是限制最少的鎖,而X鎖是限制最多的鎖。相應的操作自動產(chǎn)生鎖的對應關(guān)系如下:
    ??? * INSERT、UPDATE、DELETE??--RX鎖
    ??? * CREATE? --S鎖
    ??? * ALTER? --X鎖
    ?
    ??? 1、共享鎖(SHARE)
    ??? LOCK TABLE table_name IN SHARE MODE
    ?
    ??? 某事務使用S鎖鎖定表時,只允許其他事務使用S鎖鎖定該表,不能修改數(shù)據(jù)
    ?
    ??? 2、排他鎖(EXCLUSIVE)
    ??? LOCK TABLE table_name IN EXCLUSIVE MODE
    ?
    ??? 某事務對表加了X鎖之后,不再允許其他事務鎖定該表
    ?
    ??? 3、行級共享鎖(ROW SHARE)
    ??? LOCK TABLE table_name IN ROW SHARE MODE
    ?
    ??? 對相應行加上RS鎖后,仍然允許其他事務加RS鎖
    ?
    ??? 4、行級排他鎖(ROW EXCLUSIVE)
    ??? LOCK TABLE table_name IN ROW EXCLUSIVE MODE
    ?
    ??? 對相應行加上RX鎖后,其他事務不能再對該表加鎖
    ?
    ??? 5、共享行級排他鎖(SHARE ROW EXCLUSIVE)
    ??? LOCK TABLE table_name IN SHARE ROW EXCLUSIVE MODE
    ?
    ??? 對應行加X鎖,但對表加S鎖,所以可以讓別的事務對其他行加入X鎖
    ?
    ?
    ?
    ??? 具體的相容性如下表:
    ????
    現(xiàn)有模式
    請求鎖定
    S
    RS
    RX
    SRX
    X
    S
    Y
    Y
    N
    N
    N
    RS
    Y
    Y
    Y
    Y
    N
    RX
    N
    Y
    Y
    N
    N
    SRX
    N
    Y
    N
    N
    N
    X
    N
    N
    N
    N
    N
    ?
    ?
    ?
    ?
    鎖粒度
    ?
    ??? 鎖粒度是指被鎖定的數(shù)據(jù)對象大小。鎖粒度越大,能夠使用的資源就越少,并發(fā)度也越小,系統(tǒng)開銷也越小。
    ?
    ??? 數(shù)據(jù)庫中的鎖粒度分為4個級別:數(shù)據(jù)庫級表級行級列級注意Oracle不支持列級鎖!
    ?
    ??? 如果要在事務中處理大量記錄,則應該使用表級鎖,如果要處理多個大型表,則應該使用數(shù)據(jù)庫級鎖,如果都是少量數(shù)據(jù),則使用行級。
    ?
    ??? 1、TX鎖
    ?
    ??? TX鎖意即Transaction(事務鎖、行級鎖),改鎖從事務開始被創(chuàng)建,事務提交或回滾后釋放。
    ??? TX鎖可以鎖定事務所涉及到的所有數(shù)據(jù)行。
    ?
    ??? 事務鎖只有X鎖一種類型,而且是Oracle支持的最低級別的鎖。
    ?
    ??? 2、TM鎖
    ?
    ??? TM鎖即表級鎖,它包括了所有的5種鎖模式。
    ?
    ??? 注意:因為Oracle在行級只提供X鎖,所以與RS鎖對應的行級鎖也是X鎖!
    ?
    ??? 3、數(shù)據(jù)庫級鎖
    ?
    ??? 禁止任何新會話和新事務。主要是為了在沒有任何干擾情況下來完成對數(shù)據(jù)庫的維護。
    ?
    ??? 通常DBA將數(shù)據(jù)庫設置到限制性模式來鎖定它,在限制性模式中只允許RESTRICTED SESSION特權(quán)的的用戶登錄,命令如下:
    ?
    ??? ALTER SYSTEM ENABLE RESTRICTED SESSION;
    ?
    ??? 注:這個操作對于已經(jīng)在數(shù)據(jù)庫中的SESSION將不起作用。
    ?
    ?
    ??? 也可以通過將數(shù)據(jù)庫設置到READ ONLY模式下來實現(xiàn)鎖定數(shù)據(jù)庫。
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ??? 列舉了一些基礎,具體研究參閱《Oracle9i&10g編程藝術(shù)》第六章。




    -The End-

    posted on 2008-10-26 21:35 decode360-3 閱讀(178) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: 午夜高清免费在线观看| 亚洲五月午夜免费在线视频| 亚洲成熟丰满熟妇高潮XXXXX | 国产偷国产偷亚洲高清日韩 | 亚洲综合网站色欲色欲| 久久亚洲免费视频| 亚洲爆乳成av人在线视菜奈实| 国产国拍精品亚洲AV片 | 午夜亚洲AV日韩AV无码大全| 无码永久免费AV网站| 中文字幕无线码中文字幕免费| 亚洲videosbestsex日本| 成人午夜亚洲精品无码网站| 美女被免费喷白浆视频| 精品97国产免费人成视频| 亚洲另类小说图片| 国产亚洲视频在线播放| 四虎免费大片aⅴ入口| 久久久久久AV无码免费网站| 国产成人亚洲综合a∨| 亚洲人成电影青青在线播放| 亚洲综合伊人久久综合| 国产一级一片免费播放i| 免费人成在线观看69式小视频| 成人在线免费视频| 国产精品高清视亚洲一区二区| 亚洲色婷婷综合久久| 小小影视日本动漫观看免费| 午夜网站在线观看免费完整高清观看 | 91av在线免费视频| 国产男女爽爽爽免费视频| 亚洲暴爽av人人爽日日碰| 亚洲小说区图片区| 国产亚洲无线码一区二区| 亚洲精品国精品久久99热| 日韩午夜免费视频| 无人在线观看完整免费版视频| 久久精品视频免费播放| AAAAA级少妇高潮大片免费看| 国产精品亚洲综合天堂夜夜| 中文字幕无码亚洲欧洲日韩|