莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          oracle table-lock的5種模式

          Posted on 2007-03-05 14:34 dennis 閱讀(959) 評論(0)  編輯  收藏 所屬分類: 數據庫技術
          Oracle中的鎖定可以分為幾類:DML lock(data lock),DDL lock(dictionary lock)和internal lock/latch。
          DML lock又可以分為row lock和table lock。row lock在select.. for update/insert/update/delete時隱式自動產生,而table lock除了隱式產生,也可以調用lock table in name來顯示鎖定。

          如果不希望別的session lock/insert/update/delete表中任意一行,只允許查詢,可以用lock table table_name in exclusive mode。(X)這個鎖定模式級別最高,并發度最小。

          如果允許別的session查詢或用select for update鎖定記錄,不允許insert/update/delete,可以用lock table table_name in share row exclusive mode。(SRX)

          如 果允許別的session查詢或select for update以及lock table table_name in share mode,只是不允許insert/update/delete,可以用lock table table_name in share mode。(share mode和share row exclusive mode的區別在于一個是非搶占式的而另一個是搶占式的。進入share row exclusive mode后其他session不能阻止你insert/update/delete,而進入share mode后其他session也同樣可以進入share mode,進而阻止你對表的修改。(S)

          還有兩種鎖定模式,row share(RS)和row exclusive(RX)。他們允許的并發操作更多,一般直接用DML語句自動獲得,而不用lock語句。

          詳細參考concepts文檔中的"Type Of Locks":http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96524/c21cnsis.htm#2937
          主站蜘蛛池模板: 始兴县| 蓝山县| 深水埗区| 沁阳市| 固安县| 东乌珠穆沁旗| 宣汉县| 松阳县| 通州区| 舟山市| 赤壁市| 武定县| 静海县| 沁水县| 大宁县| 双江| 金昌市| 泾阳县| 舞阳县| 萍乡市| 灯塔市| 庄浪县| 梧州市| 饶河县| 乌鲁木齐县| 常熟市| 柳河县| 永善县| 金湖县| 西林县| 琼中| 五指山市| 阿勒泰市| 垦利县| 夏河县| 诏安县| 高要市| 仪陇县| 元谋县| 镇远县| 石林|