oracle - Oracle数据库中的行锁和表锁有什么区别
问题描述
Oracle数据库中的行锁和表锁有什么区别。将for循环与更新语句触发表锁?
解决方案
表上的任何 DML 语句都将获取表锁。但是这个表锁不太可能以限制并发的方式影响另一个会话。当您的会话更新行时,将有一个行独占表锁,这将阻止另一个会话在表上执行 DDL(例如,添加或删除一列),同时存在涉及该表的活动的、未提交的事务。但据推测,您通常不会在更新表中的行的同时尝试修改表的结构(或了解当您部署这些 DDL 更改时,您将在短时间内阻止其他会话时间,您正在相应地选择部署时间)。
您正在更新的特定行将被锁定,以防止另一个会话修改这些行,直到您的事务提交或回滚。这些行级锁通常是导致性能和可伸缩性问题的锁。理想情况下,您的代码将被构造为尽可能短地持有锁(更新集合中的数据比进行逐行更新要快得多)并最小化两个会话同时尝试更新同一行的可能性.
推荐阅读
- perl - Perl + Curses:期望来自 getchar() 的 UTF-8 编码的多字节字符,但没有得到任何
- reactjs - 带有 typescript 和模块 css 的 React 库
- android - Android Xamarin Forms UITest 无法单击 DisplayAlert 按钮
- game-physics - 按度数将四元数 1 和四元数 2 分开?
- excel - 同时打开多个PDF VBA excel
- kotlin - 在 LibGdx (Kotlin) 中设置 JUnit、Mockito
- ios - Flutter:IOS 到 IOS 广播信标不起作用
- c - 链接错误。也许订购有问题?
- ruby-on-rails - 在加载时通过控制器渲染远程部分
- python - 如何缩短此替换密码?