【问题标题】:Oracle SQL: NOLOCK in join statmentOracle SQL:连接语句中的 NOLOCK
【发布时间】:2016-11-21 21:11:02
【问题描述】:

我不能在连接语句中的表名后使用 NOLOCK。 尝试通过 JOIN 读取未提交的数据是否有效?

【问题讨论】:

  • Oracle 中不需要这个,读者永远不会阻止作者。加:Oracle 不支持脏读

标签: sql oracle join locks read-uncommitted


【解决方案1】:

连接无关紧要。在 Oracle 中不使用 NOLOCK。查询只会看到已提交的数据(加上执行查询的事务中任何未提交的更改)。

您可以编写诸如SELECT * FROM tbl NOLOCK 之类的查询,但 NOLOCK 只是用作表别名,不会更改查询机制。

【讨论】:

  • 补充一点,(NOLOCK) 提示通常在执行读取多行的查询时使用,因为 SQL Server 中的默认读取一致性模型使用共享锁,因此读取块写入以及可能发生锁升级。因此,即使使用简单的查询,您也可以锁定整个表或更多表,并且在查询完成之前没有人可以修改数据。 Oracle 使用快照读取一致性并且不在内存中存储锁,因此那里没有锁升级之类的东西。
猜你喜欢
  • 2019-04-21
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多