1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        Oracle 10g 讀書筆記之鎖

        發布時間:  2012/8/29 17:11:18

        鎖機制用于管理對共享資源的并發訪問。

        在 Oracle 中,事務應該延遲到適當的時刻提交,因為事務很長或很大,一般不會對系統有壓力;行級鎖沒有相關的開銷,1個行鎖還是1000000個行鎖專用于鎖定這個信息的“資源”數都是一樣的;

        不要以為鎖升級“對系統更好”(例如使用表鎖而不是行鎖),Oracle 中鎖升級對系統沒有任何好處,不會節省任何資源;可以同時得到并發性和一致性,數據讀取器不會被寫入器阻塞。
        -
         

        使用 ORA_ROWSCN 的樂觀鎖定:

        ORA_ROWSCN 建立在內部 Oracle 系統時鐘(SCN)基礎上。在 oracle 中,每次提交時,SCN 都會推進。除非創建表時支持在行級維護 ORA_ROWSCN ,否則 oracle 會在塊級維護。

        創建表時啟用 ROWDEPENDENCIES,也可以使用 DBMS_REDEFINITION 中的在線重建功能。

        查詢語句:select id, dbms_rowid.rowid_block_number(rowid) blockno, ora_rowscn from table

        執行 INSERT、UPDATE、DELETE、MERGE 和 SELECT FOR UPDATE 時會阻塞,最后一個增加 NOWAIT 就不會阻塞。

        Oracle 從來不會鎖升級,但它會執行鎖轉換或鎖提升。主要有三類鎖:

        1、DML 鎖:用于確保一次只有一個人能修改某一行,而且你正在處理一個表時別人不能刪除這個表。

        a、TX鎖(事務鎖):事務發起第一個修改時會得到TX鎖,而且會一直持有這個鎖,直至事務執行提交或回滾。

        oralce 并沒有一個傳統的鎖管理器,不會用鎖管理器為系統中鎖定的每一行維護一個長長的列表。它只是簡單找到想鎖定的那一行并鎖定它。

        在待鎖定的行所在的數據塊的最前面有一個“開銷”空間,這里會存放該塊的一個事務表,大小由創建對象時 CREATE 語句的兩個參數決定:

        INITTRANS:初始的預分配大小,對于索引和表,默認為2。在頻繁修改的表上增加該值,同時 PCTFREE 值也需要相應的增加。

        MAXTRANS:可以擴展到的最大值,默認為 255,即該塊最大的并發事務數。Oracle 10g 該參數已經不再使用。

        b、TM 鎖:用于確保在修改表的內容時,表的結構不會改變。

        每個事務只能得到一個 TX 鎖,但修改多少個對象,就能得到多少個 TM 鎖。并且鎖的總數可以通過 DML_LOCKS 參數定義。

        如果參數設置為 0,則不允許 DDL。通過 ALTER TABLE TABLENAME DISABLE TABLE LOCK 命令,逐個禁用 TM 鎖。

        2、DDL 鎖:在 DDL 操作中會自動為對象加 DDL 鎖,從而保護這些對象不會被其他會話所修改。

        a、排他鎖:防止其它會話得到它們自己的 DDL 鎖或 TM 鎖。這說明 DDL 操作期間可以查詢表,但無法修改。

        大多數 DDL 都帶有一個排他 DDL 鎖。例如 alter table t add new_column date;

        例外:create index t_idx on t(x) online,它只會試圖得到表上的一個低級(mode 2)TM鎖,所以在 DDL 語句執行期間對表所做的修改維護一個記錄,執行 CREATE 時再把這些修改應用至新的索引。

        b、共享鎖:保護所引用對象的結構,使之不會其他會話修改,但是允許修改數據。在創建存儲的編譯對象(如過程或視圖)時,會對依賴的對象加這種共享 DDL 鎖。

        c、可中斷解析鎖:允許一個對象向另外某個對象注冊其依賴性。當某會話解析一條語句時,對該語句引用的每一個對象都會加一個解析鎖。目的是如果引用對象被修改,則將緩存的語句置為無效。

        利用視圖 DBA_DLL_LOCKS 查看該信息。視圖腳本:[Oracle_HOME]/RDBMS/ADMIN\/catblock.sql

        3、內部鎖和閂:閂是輕量級的串行化設備,用于協調對共享數據結構、對象和文件的多用戶訪問。設計為只保持極短的一段時間。使用諸如“測試和設置”以及“比較及交換”之類的原子指令來處理閂。

        由于設置和釋放閂的指令是原子性的,盡管可能有多個進程在同時請求它,但操作系統本身可以保證只有一個進程能測試和設置閂。


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线