当前位置: 首页 > 知识库问答 >
问题:

Oracle中有哪些不同类型的锁

娄利
2023-03-14

请任何人解释Oracle中的锁定模式,即共享、独占和更新锁定。我找到了很多关于这个和那个的理论

共享锁:没有人可以改变数据,只读目的

独占锁定:只允许一个用户/连接更改数据。

更新锁:行被锁定,直到用户提交/回滚。

然后,我尝试共享以检查它的工作原理

SQL> lock table emp in share mode;

Table(s) Locked.

SQL> update emp set sal=sal+10;

14 rows updated.

然后,我发现,用户可以在共享锁定后更改数据。那么,它与独占锁和更新锁有什么不同呢。

另一个问题,更新锁和排他锁有什么不同,即使它们看起来几乎是等同的。

共有2个答案

曹波鸿
2023-03-14

文档中对此进行了很好的解释:http://docs.oracle.com/cd/E11882_01/server.112/e41084/ap_locks001.htm#SQLRF55502

在您的示例中,您以共享模式锁定了表。这不会阻止其他会话以共享模式锁定同一个对象,但会阻止它们以独占模式锁定该对象,这样您就不能在更新该表(它有一个共享锁)时删除该表(它需要一个独占锁)。

常波鸿
2023-03-14

为未来的访问者张贴解释,它也给出了答案。

  • 在我开始之前,让我先说有 5 种类型的表锁 - 行共享、行独占、共享、共享行独占和独占。共享锁就是其中之一。另外,请注意,有行锁,它们与表锁不同。按照我在最后提供的链接阅读所有这些内容。
  • 在以下语句中指定的表上获取共享锁 – 共享模式下的锁定表表;
  • 此锁
  • 可防止其他事务获得“行独占”(此锁由 INSERT、UPDATE 和 DELETE 语句使用)、“共享行独占”和“独占”表锁,否则允许所有内容。
  • 因此,这意味着共享锁将阻止其他事务在该表上执行 INSERT、UPDATE 和 DELETE 语句,但允许其他事务使用“SELECT ...FOR UPDATE“语句,因为对于此语句,需要”行共享“锁,并且当需要”共享“锁时允许使用。

下表很好地总结了锁和允许的内容。

 类似资料:
  • 我对不同类型的标识符案例以及人们对它们的称呼感兴趣。你知道这个名单上还有其他名字吗? :骆驼大小写(例如在java变量名中) :大写的骆驼大小写(例如在java类名中) :Snake大小写(例如在python变量名中) : Kebab大小写(例如球拍名称) :平面大小写(例如在java包名称) :大写(例如C常量名称)

  • 本文向大家介绍有哪些不同类型的区块链?相关面试题,主要包含被问及有哪些不同类型的区块链?时的应答技巧和注意事项,需要的朋友参考一下 回答:下面列出了三种主要的区块链类型: 公共区块链:顾名思义,这里没有人负责,任何人都可以读/写/审核区块链。 私有区块链:顾名思义,它是个人或组织的私有财产。 财团或联合区块链:财团的选定成员可以读取/写入/审核区块链

  • 本文向大家介绍Selenium有哪些不同的等待类型?,包括了Selenium有哪些不同的等待类型?的使用技巧和注意事项,需要的朋友参考一下 下面列出了Selenium中可用的不同类型的等待- 隐式等待 这是Selenium中动态等待的一种,其语法为- 明确等待 这是Selenium中动态等待的一种,其语法为- 流利的等待 这是Selenium中动态等待的一种,其语法为- 静态等待 这用于将执行暂停

  • 本文向大家介绍Java中定义了哪些不同类型的嵌套类?,包括了Java中定义了哪些不同类型的嵌套类?的使用技巧和注意事项,需要的朋友参考一下 在Java中,可以在另一个类中定义一个类,此类称为嵌套类。对于内部类,我们可以使用访问修饰符,例如private,public,protected或default;对于外部类, 可以使用default或public访问修饰符。 Java中定义了两种类型的嵌套类

  • 本文向大家介绍 测试类型有哪些?相关面试题,主要包含被问及 测试类型有哪些?时的应答技巧和注意事项,需要的朋友参考一下 黑盒 白盒 灰盒

  • 本文向大家介绍RabbitMQ 节点的类型有哪些?相关面试题,主要包含被问及RabbitMQ 节点的类型有哪些?时的应答技巧和注意事项,需要的朋友参考一下 磁盘节点:消息会存储到磁盘。 内存节点:消息都存储在内存中,重启服务器消息丢失,性能高于磁盘类型。