Oracle Lock

被问到,没有完整回答出来的问题之二: oracle Lock

1. DML lock(data lock)
  1-1. row lock
          在select.. for update/insert/update/delete时隐式自动产生;

   1-2. table lock
          除了隐式产生,也可以调用lock table in name来显示锁定;
     1-2-1. 如果不希望别的session lock/insert/update/delete表中任意一行,只允许查询,
      ==>lock table table_name in exclusive mode。(X)  这个锁定模式级别最高,并发度最小。
     1-2-2. 如果允许别的session查询或用select for update锁定记录,不允许Insert/update/delete,
      ==>lock table table_name in share row exclusive mode。(SRX)
       1-2-3. 如 果允许别的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)
       1-2-4. row share(RS)
       1-2-5. row exclusive(RX)

2. DDL lock(dictionary lock)
3. internal lock/latch

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>