Oracle数据库中的行锁和表锁的区别

70gysomp  于 2023-05-28  发布在  Oracle
关注(0)|答案(1)|浏览(132)

Oracle数据库中的行锁定和表锁定有什么区别?带有UPDATE语句的for循环会触发表锁吗?

qni6mghb

qni6mghb1#

表上的任何DML语句都将获得表锁。但是这个表锁不太可能以限制并发的方式影响另一个会话。当你的会话更新行时,会有一个行排他的表锁,当有活动的、未提交的事务涉及到表时,它会阻止另一个会话对表执行DDL(比如,添加或删除一列)。但是,一般情况下,您不会在更新表中的行的同时尝试修改表的结构(或者理解当您部署这些DDL更改时,您将在短时间内阻止其他会话,并且您将相应地选择部署时间)。
您正在更新的特定行将被锁定,以防止其他会话修改这些行,直到您的事务提交或回滚。这些行级锁通常是导致性能和可伸缩性问题的锁。理想情况下,您的代码应该被构造为尽可能短的时间内保持锁(更新集合中的数据比逐行更新快得多),并最大限度地减少两个会话试图同时更新同一行的可能性。

相关问题