oracle锁.隔离级别等

1.悲观封锁,乐观封锁。更多的时候应该使用悲观锁(oracle)
2.有四个常见DML语句在数据库中阻塞:Insert,update,delete和select for update.
2.1在insert语句中,最简单的发生阻塞的方法是 借助oracle序列生成主码
悲观封锁在用户指出他们要修改数据的意图的瞬间,使用那个语句;乐观封锁应该在更新数据库的数据之前立即使用那个语句
(那个语句是指select for update nowait)
3.oracle中死锁非常少见.但有两种情况:
3.1如果更新父表的主码(主键),子表因为没有索引而被锁定
3.2如果删除了父表的行,整个子表也将被锁定(因为没有索引)
通过简单地为那些外码加上索引,死锁和其他许多争论的问题就会消失
4.什么时候不需要索引外码?一般情况下,是:
4.1不从父表中删除.
4.2不更新父表的唯一/主码值.
4.3不从父表连接到子表.
如果对上面的三项满意,就放心地跳过索引--不再需要它了.如果进行了上面的某项操作,那么就要注意后果。
5.oracle永远不会扩大一个锁定.但它确实使用锁定转换,或锁定提升--它们是与锁定扩大经常混淆的术语。
在oracle中.拥有一个锁定和一百万个锁定的开销都是一样的--没有开销.
尽可能在最低一级采用锁定(尽可能少地限制锁定),然后将那个锁定转换为更多限制的等级.
6.oracle中,锁定类型分为5种.3种共同的,后2个是ops(oracle并行服务器)独有的.
分别是:DML锁定(select,insert,update,delete),行或表级的锁定;
      DDL锁定(create,alter),保护对象结构的定义;
      内部锁定和锁存器(latch),保护内部数据结构的锁定
      分布式锁定,OPS
      PCM(并行缓冲器管理)锁定
DML锁有三种封锁方式有三种:共享封锁(SHARE),独占封锁(EXCLUSIVE),共享更新封锁(SHARE UPDATE)
6.1共享方式的表封锁是对表中的所有数据进行封锁,该锁用于保护查询数据的一致性,防止其它用户对已封锁的表进行更更新。其它用户只能对该表再施加共享方式的锁,而不能再对该表施加独占方式的封锁,共享更新锁可以再施加,但不允许持有共享更新封锁的进程做更新。共享该表的所有用户只能查询表中的数据,但不能更新
共享方式表封锁常用于一致性查询过程,即在查询数据期间表中的数据不发生改变
6.2独占方式表封锁
独占方式表封锁是用于封锁表中的所有数据,拥有该独占方式表封锁的用户,即可以查询该表,又可以更新该表,其它的用户不能再对该表施加任何封锁(包括共享、独占或共享更新封锁)。其它用户虽然不能更新该表,但可以查询该表。
独占方式封锁通常用于更新数据
6.3共享更新封锁方式
共享更新封锁是对一个表的一行或多行进行封锁,因而也称作行级封锁。表级封锁虽然保证了数据的一致性,但却减弱了操作数据的并行性。行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不被其它用户所修改。因而行级锁即可保证数据的一致性又能提高数据操作的迸发性。

6.1DML锁定:
DML锁定用于保证一行在一段时间只有一个用户进行修改,并且别人不可以删除正在使用的表.
TX锁定:在一个事务初始化其第一次更改结果时获取,且一直保持,直到事务执行提交commint/rollback为止.
7.事务隔离等级:
7.1脏读dirty read:允许读一个没有提交的,脏的数据.
7.2非重复读取:意味着,读者在T1读取一个行,在T2再次读取那个行,该行可能被修改.
7.3幻像读:在T1执行了一个查询,T2再次执行,结果不一致了.
4个隔离级别:Read Uncommitted;Read Committed;Repeatable Read.Serializable.
oracle支持Read Committed和serializable,自带一个级别:Read only.默认是Read Committed.
Read Committed不允许错读,允许非重复读取和幻象读.

悲观/乐观锁的使用时机:(参考网页:乐观锁与悲观锁 - 不知疲倦的猪 - BlogJava.htm)
 脏数据:但当两个在写同条记录时候,需要使用一些技术保证,那么可以使用时间戳,版本号以及每次更新时候都把所有的条件进行处理i
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值