Cer*_*rin 38 postgresql nolock
在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),但它似乎都是关于如何锁定表,而不是确保它没有被锁定.
Fra*_*ens 54
SELECT不会锁定PostgreSQL中的任何表,除非你想要一个锁:
SELECT * FROM tablename FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)
PostgreSQL使用MVCC来最小化锁争用,以便在多用户环境中实现合理的性能.读者不与作家或其他读者发生冲突.
小智 14
这是一个老问题,但我认为实际问题还没有得到解答。
查询SELECT
(不包含子句for update
)永远不会锁定任何行(或表),也不会阻止对表的并发访问。并发 DML ( INSERT, UPDATE, DELETE
) 也不会阻塞SELECT
语句。
简单地说:Postgres 中不需要(nolock)
。读者永远不会阻止作家,作家也永远不会阻止读者
Mat*_*ood 12
我做了一些研究,似乎SQL Server中的NOLOCK提示与READ UNCOMMITTED事务隔离级别大致相同.在PostgreSQL中,您可以设置READ UNCOMMITTED,但它会默认将级别升级为READ COMMITTED.不支持READ UNCOMMITTED.
用于事务隔离的PostgreSQL 8.4文档:http://www.postgresql.org/docs/8.4/static/transaction-iso.html
归档时间: |
|
查看次数: |
34894 次 |
最近记录: |