问题标签 [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.
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 这样的脏读,有没有办法允许从未提交的行读取?或另一种选择?
sql - 如何在一条 SQL 语句中组合两个不同的 SQL 查询?
我有两张桌子:
和
所有列都有数据,但 from_to 是添加的新列。我想将发件人或收件人的用户名添加到 from_to 列中。
我曾使用以下 SQL 查询来找出发件人或收件人的用户名:
我想在这个 SQL 查询中添加 SQL 查询:
由于条件不同(ON),我如何将查找发件人或收件人的 SQL 查询组合到下面的 SQL 查询中?
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
是否传播到内部表的问题。
sql-server - 在不锁定表的情况下读取批量记录和更新单个记录的最佳方法
这是我的代码,我正在寻找在更新时不锁定记录的最佳方法。
mysql - MySQL 中的 NOLOCK 等效项
我试图了解 MySQL 中 NOLOCK 的等价物。我在Stack Overflow上找到了一个答案,指出
在 MYSQL 中是一样的
在 SQL Server 中。我尝试了一些研究,但我找到了多种解决方法,我想确保我不会破坏任何东西,尤其是我正在处理的表包含近十亿行。
感谢您的任何反馈或建议。
tsql - 谓词 CONTAINS 不返回带有 NOLOCK 的记录
我正在编写集成测试,为此我使用 TransactionScope(TransactionScopeAsyncFlowOption.Enabled)。我将一些数据添加到数据库(MS SQL Server),然后检查结果,比较它等。当测试通过时,新数据将不会保存在数据库中。所以这种方法总是很好用。当我调试测试时,我可以检查数据库中的新记录,例如
但是现在我在调试测试时需要检查 CONTAINS 谓词,例如
这个查询只返回我的数据库中的现有记录,但它不返回我在测试中添加的未提交记录。“姓氏”字段当然接受全文搜索。我已阅读有关谓词 CONTAINS 的信息,但没有找到答案。谓词包含可以处理未提交的记录吗?如果是,怎么做?
sql - 如何在 SQL UPDATE 语句 WHERE 子句中读取脏值
假设我在两个单独的 SSMS 查询窗口中有以下查询:
我运行查询窗口 1(但不提交),然后运行查询窗口 2。
我希望查询窗口 2 仅更新在我开始查询 1 后插入的行(所有新记录的状态为“等待”)。但是,SQL Server 正在等待第一个查询完成,因为在更新语句中它没有读取脏值(即使它设置为 READ UNCOMMITTED);
有没有办法克服这个问题?
在我的应用程序中,我将有 2 个(或更多)进程运行它,我希望进程 2 应该能够拾取进程 1 没有拾取的行;我不希望流程 2 需要等到流程 1 完成
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 风格有关。