您的位置:首页 > 其它

共享锁和排它锁

2016-07-13 10:23 183 查看
主要讨论共享锁和排它锁两个比较常见简单的锁

共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁:如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。

1、执行SELECT语句时可以获得共享锁。Oracle通过锁定指定表来确保没有人能够在你使用表数据时修改该表的结构,但是,被查询的记录并没有进行锁定。共享锁无法阻止其他用户读取和修改表中的数据,只能阻止其他用户使用ALTER TABLE命令改变指定表的结构或用DROP TABLE命令删除指定表。多个用户可以同时获得相同数据上的共享锁。

2、执行DML语句时可以获得排他锁,并且正在被修改的所有记录都会获得排他锁。在你启动的事务内,排他锁阻止其他用户获得正在处理的数据上的排他锁,直至执行COMMIT或ROLLBACK语句。这样,两个用户就无法同时更新相同的数据。某个用户试图更新被另一个用户锁定的数据时,第一个用户必须等待至去除排他锁后才能进行操作。

注:SELECT语句对正在查询的数据不进行锁定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: