问题标签 [nolock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
41 浏览

sql - oracle数据库中未提交读取的替代方案

当两个用户同时启动一个进程时,我在 oracle 10g 数据库中的查询出现问题。此查询正在插入另一个表中的卷数据。

我试图简化示例:

表结构:

表 1 VAL1 | VAL2

表2 ID | VAL1 | VAL2

询问:

插入Table2 (id, VAL1,VAL2)
select t2.id + rownum , t1.VAL1, t1.VAL2 from Table1 t1, (select max(id) as id from table2) t2

问题描述:

User1 启动进程,查询将插入 50000 条 id 从 1 到 50000 的记录

User2 同时启动进程,select max(id) as id from table2 不会返回预期值 50000,因为 user1 插入的行尚未提交,因此系统将尝试插入具有相同 Id 的行。

似乎 oracle 不允许像 sql server 或 DB2 这样的脏读,有没有办法允许从未提交的行读取?或另一种选择?

0 投票
1 回答
52 浏览

sql - 如何在一条 SQL 语句中组合两个不同的 SQL 查询?

我有两张桌子:

所有列都有数据,但 from_to 是添加的新列。我想将发件人或收件人的用户名添加到 from_to 列中。

我曾使用以下 SQL 查询来找出发件人或收件人的用户名:

我想在这个 SQL 查询中添加 SQL 查询:

由于条件不同(ON),我如何将查找发件人或收件人的 SQL 查询组合到下面的 SQL 查询中?

0 投票
1 回答
236 浏览

sql-server - SQL Server: VIEW with NO LOCK 但调用时没有 NO LOCK

我在 Microsoft SQL Server 2016 上,并且有以下(简化的)查询引用了一个视图:

视图如下所示:

我现在的问题是:外部 SELECT使用 NOLOCK 表提示这一事实是否意味着 VIEW 内的 NOLOCK 无关紧要?还是在执行外部 SELECT 时 NOLOCK 仍然相关?

我的问题的更大背景是我有一个案例,我正在分析服务器上的阻塞情况。我发现了一个查询,例如上面描述的 SELECT:一个 SELECT 查询正在使用一个 VIEW。VIEW 使用了 NOLOCK 表提示,但外部 SELECT 没有使用。尽管如此,该查询仍然是一个障碍,我正在尝试找出原因。

我已经做了一些研究,我能找到的唯一确认是人们想知道 aNOLOCK是否传播到内部表的问题。

0 投票
0 回答
18 浏览

sql-server - 在不锁定表的情况下读取批量记录和更新单个记录的最佳方法

这是我的代码,我正在寻找在更新时不锁定记录的最佳方法。

0 投票
0 回答
178 浏览

mysql - MySQL 中的 NOLOCK 等效项

我试图了解 MySQL 中 NOLOCK 的等价物。我在Stack Overflow上找到了一个答案,指出

在 MYSQL 中是一样的

在 SQL Server 中。我尝试了一些研究,但我找到了多种解决方法,我想确保我不会破坏任何东西,尤其是我正在处理的表包含近十亿行。

感谢您的任何反馈或建议。

0 投票
0 回答
23 浏览

tsql - 谓词 CONTAINS 不返回带有 NOLOCK 的记录

我正在编写集成测试,为此我使用 TransactionScope(TransactionScopeAsyncFlowOption.Enabled)。我将一些数据添加到数据库(MS SQL Server),然后检查结果,比较它等。当测试通过时,新数据将不会保存在数据库中。所以这种方法总是很好用。当我调试测试时,我可以检查数据库中的新记录,例如

但是现在我在调试测试时需要检查 CONTAINS 谓词,例如

这个查询只返回我的数据库中的现有记录,但它不返回我在测试中添加的未提交记录。“姓氏”字段当然接受全文搜索。我已阅读有关谓词 CONTAINS 的信息,但没有找到答案。谓词包含可以处理未提交的记录吗?如果是,怎么做?

0 投票
1 回答
113 浏览

sql - 如何在 SQL UPDATE 语句 WHERE 子句中读取脏值

假设我在两个单独的 SSMS 查询窗口中有以下查询:

我运行查询窗口 1(但不提交),然后运行查询窗口 2。

我希望查询窗口 2 仅更新在我开始查询 1 后插入的行(所有新记录的状态为“等待”)。但是,SQL Server 正在等待第一个查询完成,因为在更新语句中它没有读取脏值(即使它设置为 READ UNCOMMITTED);

有没有办法克服这个问题?

在我的应用程序中,我将有 2 个(或更多)进程运行它,我希望进程 2 应该能够拾取进程 1 没有拾取的行;我不希望流程 2 需要等到流程 1 完成

0 投票
2 回答
60 浏览

mysql - Hive 和 Impala 中的 NOLOCK

我想了解为什么我们不在 Impala、Hive 或 MySQL 中运行的 SQL 查询末尾使用 NOLOCK 关键字。例如,我在工作中通过 Cloudera 工作台同时使用 Hive 和 Impala。Cloudera 工作台无法识别 NOLOCK 关键字。同样,我以前也使用过 MySQL。即使在那里,NOLOCK 也不起作用。为什么我们不需要在 Hive、Impala、MySQL 或 Big Query 中使用 NOLOCK?

免责声明:我想澄清一下,我对 NOLOCK 功能及其用例有很好的了解。这个问题与不需要 NOLOCK 的 SQL 风格有关。