深入浅出oracle锁---原理篇
3 月,跳不动了?>>> 这几天项目中遇到了数据库锁的问题,还在解决中,找到了一篇原理性的文章,分享一下。 在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些共享资源的并发性访问串行化,oracle中的锁就可以提供这样的功能,当事务在对某个对象进行操作前,先向系统发出请求,对其加相应的锁,加锁后该事务就对该数据对象有了一定的控制权限,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作(可以做select动作,但select 利用的是undo中的前镜像数据了). Oracle锁的分类 Oracle锁基本上可以分为二类 a:共享锁(share locks) 也称读锁,s锁 b:排它锁 (exclusive locks) 也称写锁,x锁 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 按锁保护的内容分类 oracle提供多粒度封锁机制,按保护对象来分,据此又可以分为 a:dml锁, data