锁定(lock)用来控制多个用户对表里相同数据的并行访问。如下表中的示例。
如果没有使用锁定来管理事务,则在9:04的时候,用户A检索id为1的c1列值时,将显示为20,用户A会发现他所做的更新丢失了,实际是被B所做的更新覆盖 掉了。
当我们引入锁定以后,则情况发生了变化,如下表所示。由于使用了锁定来管理事务的并发性,因此用户A在9:04时,检索c1列的值,将显示他所更新的10。
在锁定中,存在以下两种基本的模式。
(1)排他锁(Exclusive,简称X锁):一旦用户对某个资源添加了X锁,则其他用户都不能再对该资源添加任何类型的锁,直到该用户释放了资源上的X锁为止。
(2)共享锁(Share,简称S锁):一旦用户对某个资源添加了S锁,则其他用户都不能在该资源上添加X锁,只能添加S锁,直到该用户释放了资源上的S锁为止。
根据被保护的对象种类的不同,锁定可以分成多种类型,比如由于DDL引起的锁定、DML事务引起的锁定、分布式事务中涉及的锁定等。我们主要应该关注DML 事务引起的锁定。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/
时间: 2024-10-26 00:13:46