Java世界

          學(xué)習(xí)筆記

          常用鏈接

          統(tǒng)計

          積分與排名

          天籟村

          新華網(wǎng)

          雅虎

          最新評論

          oracle table-lock的5種模式

          Oracle中的鎖定可以分為幾類:
          1、DML lock(data lock),
          2、DDL lock(dictionary lock)
          3、internal lock/latch。

          DML lock又可以分為row lock和table lock。row lock在select.. for update/insert/update/delete時隱式自動產(chǎn)生,而table lock除了隱式產(chǎn)生,也可以調(diào)用lock table <table_name> in </table_name> name來顯示鎖定。

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

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

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

          還有兩種鎖定模式,row share(RS)和row exclusive(RX)。他們允許的并發(fā)操作更多,一般直接用DML語句自動獲得,而不用lock語句。
          詳細(xì)參考concepts文檔中的"Type Of Locks":
          http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96524/c21cnsis.htm#2937 


          -------------------------------------
          怎么unlock table 解鎖

          方法一、kill session:

          SQL> select object_id,session_id from v$locked_object;  //注意session_id 就是上鎖的 session標(biāo)志
          SQL> select username,sid,SERIAL#  from v$session where sid=。。;      //這里的SID = session_id 
          SQL> alter system kill session 'id,serial#';     //殺死該session

          方法二、rollback/commit 終止事務(wù)處理


          ORACLE 大表建立索引的一些考慮 

          首先,應(yīng)當(dāng)考慮表空間和磁盤空間是否足夠。我們知道索引也是一種數(shù)據(jù),在建立索引的時候勢必也會占用大量表空間。因此在對一張大表建立索引的時候首先應(yīng)當(dāng)考慮的是空間容量問題。
          其次,在對建立索引的時候要對表進(jìn)行加鎖,因此應(yīng)當(dāng)注意操作在業(yè)務(wù)空閑的時候進(jìn)行
          性能調(diào)整方法:
          首先應(yīng)考慮IO, 物理上,應(yīng)當(dāng)盡量把索引與數(shù)據(jù)分散到不同的磁盤上。 邏輯上,數(shù)據(jù)表空間與索引表空間分開。這是在建索引時應(yīng)當(dāng)尊守的基本原則
          其次,在建立索引的時候要對表進(jìn)行全表的掃描工作,因此,應(yīng)當(dāng)考慮調(diào)大初始化參數(shù)db_file_multiblock_read_count的值。一般設(shè)置為16或更大
          再 次,建立索引除了要進(jìn)行全表掃描外同時還要對數(shù)據(jù)進(jìn)行大量的排序操作,因此,應(yīng)當(dāng)調(diào)整排序區(qū)的大小。在9I之前, 可以在SESSION級別上加大sort_area_size 的大小, 比如設(shè)置為100M或者更大。9I 以后, 如果初始化參數(shù)workarea_size_policy的值為TRUE, 則排序區(qū)從PGA_AGGREGATE_TARGET里自動分配獲得


          posted on 2013-11-05 14:31 Rabbit 閱讀(2066) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 大庆市| 清丰县| 连州市| 张家川| 沅陵县| 新泰市| 霍州市| 凭祥市| 梨树县| 清远市| 宁城县| 田林县| 台南市| 大名县| 宝清县| 枞阳县| 桐城市| 峡江县| 莱芜市| 兰西县| 阿城市| 武平县| 繁昌县| 鹿泉市| 涿鹿县| 宾川县| 广元市| 诸暨市| 辽阳县| 尼木县| 汤阴县| 清原| 开江县| 句容市| 昌平区| 宝应县| 华坪县| 任丘市| 孟津县| 梅州市| 思南县|