with (nolock)当你应该/不应该使用它时,有人可以解释使用查询的含义吗?
例如,如果您的银行应用程序具有较高的事务率和某些表中的大量数据,那么哪些类型的查询可以解决?是否应该经常使用它/从不使用它?
背景:我有一个性能关键的查询,我想运行,我不关心脏读.
我的问题是; 如果我正在使用连接,我是否必须在这些上指定NOLOCK提示?
例如; 是:
SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b WITH (NOLOCK) ON a.ID = b.ID
Run Code Online (Sandbox Code Playgroud)
相当于:
SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b ON a.ID = b.ID
Run Code Online (Sandbox Code Playgroud)
或者我是否需要(NOLOCK)在连接上指定提示以确保我没有锁定连接表?
我的业务是制作非关键任务的网站和应用程序- 例如.银行软件,太空飞行,重症监护应用等.你明白了.
那么,有了这个庞大的免责声明,在一些Sql语句中使用NOLOCK提示是不是很糟糕?几年前,一位Sql管理员建议我应该使用NOLOCK,如果我对"脏读"感到满意,这会让我的系统性能提高一些,因为每次读取都没有锁定表/行/不管.
我还被告知,如果我遇到死锁,这是一个很好的解决方案.所以,我开始关注这个想法几年,直到一个Sql大师帮我一些随机代码并注意到我的sql代码中的所有NOLOCKS.我被礼貌地责骂,他试图向我解释(为什么这不是一件好事)而且我迷路了.我觉得他的解释的本质是'它是一个解决更严重问题的创可贴解决方案......特别是如果你遇到了死锁.因此,修复问题的根源.
我最近做了一些谷歌搜索,并发现了这篇文章.
那么,有些sql db guru sensei的请赐教吗?
一切都基于这样的假设,即(nolock)完全适合于这种情况.已经有很多问题争论是否与(nolock)一起使用.
我环顾四周,无法找到使用之间是否存在实际差异with(nolock):
select customer, zipcode from customers c with(nolock)
Run Code Online (Sandbox Code Playgroud)
或者只是(nolock):
select customer, zipcode from customers c (nolock)
Run Code Online (Sandbox Code Playgroud)
这两者之间是否存在功能差异?文体?
一个比另一个年长,有可能被弃用吗?
在SQLServer中,您可以使用语法"(nolock)"来确保查询不会锁定表,或者不会被锁定同一个表的其他查询阻止.例如
SELECT * FROM mytable (nolock) WHERE id = blah
Run Code Online (Sandbox Code Playgroud)
Postgres中的等效语法是什么?我在PG中找到了关于表锁定的一些文档(http://www.postgresql.org/docs/8.1/interactive/sql-lock.html),但它似乎都是关于如何锁定表,而不是确保它没有被锁定.
我怎样才能使这个工作?我从远程链接服务器运行一个表值函数.我尝试添加没有锁定这4部分命名,但我仍然得到相同的错误.我正在使用mssql-2008
select * from [110.10.10.100].testdbname.dbo.ufn_getdata('4/25/2013') as tb;(NOLOCK)
Run Code Online (Sandbox Code Playgroud) 我见过使用nolock和(nolock)的sql语句,例如 -
select * from table1 nolock where column1 > 10
Run Code Online (Sandbox Code Playgroud)
和
select * from table1 with(nolock) where column1 > 10
Run Code Online (Sandbox Code Playgroud)
以上哪项陈述是正确的,为什么?
有什么方法可以告诉sql server使用(nolock)提示或存储过程中的每个选择?
将每个选择添加到每个选项中是非常烦人的....
有没有办法运行这些查询,好像我添加了一个(NOLOCK)提示?
我有一些长时间运行的查询不时出现超时问题和死锁.
我想知道什么时候最适合使用NOLOCK而在哪里?
我是否在更新和插入中使用它?还是读?