问题标签 [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 投票
5 回答
62971 浏览

postgresql - PostgreSQL 等效于 SQLServer 的 NoLock 提示

在 SQLServer 中,您可以使用语法“(nolock)”来确保查询不会锁定表或不会被锁定同一表的其他查询阻塞。例如

Postgres 中的等效语法是什么?我在 PG ( http://www.postgresql.org/docs/8.1/interactive/sql-lock.html )中找到了一些关于表锁定的文档,但这一切似乎都是针对如何锁定表,而不是确保它没有被锁定.

0 投票
2 回答
1892 浏览

sql - 我可以在数据库范围的设置中应用 NOLOCK 吗?

有没有办法使 WITH(NOLOCK) 应用于在特定数据库上运行的任何 SELECT 语句?

0 投票
3 回答
3018 浏览

sql - 如何避免这两个 SQL 语句之间出现死锁?

我有两个在不同线程中运行的存储过程,在 SQL Server 2005 上运行。一个过程将新行插入一组表中,另一个过程从同一组表中删除旧数据。这些过程在DLevelModel表上遇到了死锁。这是架构:

滚动条图像
(来源:barramsoft.com

DFile:主键 = DFileID
DLevel:主键 = DLevelID,外键:DFileID
模型:主键 = ModelID,外键:DFileID
元素:主键 = ElementID,外键 1:DFileID,外键 2:DLevelID

我已经隔离了导致死锁的确切的两个 SQL 语句(每个存储过程中的一个)。我已经看到任何一个程序报告的死锁。我在这两种情况下都使用 top (1000) 并且两个语句都在循环中执行,直到它们完成并且没有剩余的行可以删除/插入。

SQL 语句 1:

SQL 语句 2:

注意:@fileID1@fileID2的值始终保证不同。DLevel 表平均有大约。单个DFileID有 60 行,因此将在一次传递中完成所有行的删除。

如何避免这两个 SQL 语句之间出现死锁?

编辑1: 重写以更好地澄清问题;添加图像;简化 SQL 并删除了对 DLevel 表的连接,这不会导致死锁。

编辑 2: 添加了死锁图的 XML。
死锁现在发生在模型表上。模型的删除语句和模式与DLevel表类似。

0 投票
2 回答
4445 浏览

sql - TSQL NOLOCK VIEW 和存储过程

在我们公司,我们倾向于使用视图和存储过程。

我们最近开始对NOLOCK我们的许多观点执行该声明。

我想知道:如果我申请NOLOCK一个视图,它会“涓涓细流”到存储过程

假设我有一个名为的视图viewPartyPackage,而视图语句是...

而且我还有一个存储过程:

我会因为我从存储过程中调用而失去 NOLOCK 功能,而我还需要在存储过程上放置一个 (NOLOCK) 吗?还是视图中的 NOLOCK 起作用了?

0 投票
3 回答
312 浏览

sql-server - SQL Server 中的服务器端 NOLOCK

我知道在 Oracle DB 中我可以配置一个标志,即在特定 DB 上运行的所有选择查询都可以像NOLOCK添加了提示一样运行。SQL Server 中有类似的东西吗?

0 投票
3 回答
19824 浏览

java - 使用 nolock 的 Java Hibernate HQL 查询

有没有办法像我向它们添加(NOLOCK)提示一样运行这些查询?

0 投票
3 回答
212951 浏览

sql - SQL Server NOLOCK 和连接

背景:我想运行一个性能关键的查询,我不关心脏读。

我的问题是;如果我正在使用连接,我是否也必须在这些连接上指定 NOLOCK 提示?

例如; 是:

相当于:

或者我是否需要(NOLOCK)在连接上指定提示以确保我没有锁定连接表?

0 投票
2 回答
1312 浏览

delphi - 如何将 NOLOCK 与 TADOQuery 和 TADOTable 一起使用?

我有 SQL 文本“SELECT * FROM TABLE1 WITH (NOLOCK)”。

两个问题:

  1. 如何让我的 TADOQuery 使用 NOLOCK 提示,而不必在 SQL 文本中包含它?我实际上有数千个 TADOQuery 的 SQL 是动态构建的,而且很难将 WITH (NOLOCK) 添加到所有这些中,更不用说我与 MSSQL 以外的数据库平台一起使用了。有 TADOQuery 属性吗?

  2. 如何使用 TADOTable 实现相同的目标?TADOTable 没有任何 SQL,那么如何告诉它使用 NOLOCK 提示呢?

谢谢

0 投票
2 回答
8682 浏览

sql-server - 在 UPDATE 语句中,在 FROM 子句中是否遵循 NOLOCK 提示?

鉴于以下更新声明:

是否会遵守 TABLE_1 和 TABLE_2 上的 (NOLOCK) 提示?

0 投票
1 回答
642 浏览

linq-to-sql - 修改 linq-to-sql 命令文本时,应该关闭连接吗?

我正在修改 linq-to-sql 的命令文本以强制它使用 nolock,就像这样......

它是一个 MVC 应用程序,因此 datacontext 位于基本控制器中,并且可能在此代码之前使用过,更重要的是,在之后使用过。我应该在这个例程中关闭连接吗?或者根本没有?或者只有我在这里打开它?


更新:

我现在使用更通用的函数(在 DataContext 类中)来修改命令文本,并在此处打开连接时关闭连接。并且 open 已下移至 ExecuteReader。到目前为止,它一直在工作并减少零星的僵局问题。结果不必精确到秒。

我过去发现,以推荐的方式使用事务会导致站点在一夜之间用完连接。据我所知,这是 linq-to-sql 中的一个错误。可能有办法解决它,但我试图让我的主要代码简单明了。我现在“只是”必须这样做......