SQLServer的的NOLOCK提示的PostgreSQL的等效
-
25-09-2019 - |
题
在SQLServer的,可以使用语法“(NOLOCK)”,以确保该查询不锁定表或不阻止由其他查询锁定相同的表。 e.g。
SELECT * FROM mytable (nolock) WHERE id = blah
什么是在Postgres的等效语法?我发现,在PG表上锁定了一些文件( HTTP://www.postgresql .ORG /文档/ 8.1 /互动/ SQL-lock.html ),但是这一切似乎在面向怎样的锁定的表,不能保证它的的未锁定
解决方案
一个SELECT不锁定在任何的PostgreSQL表,除非你想的锁定:
SELECT * FROM tablename FOR UPDATE;
PostgreSQL使用 MVCC 以最小化锁争用,以允许在多用户环境下合理的性能。读者不与作家,也没有其他读者冲突。
其他提示
我做了一些研究,看来,在SQL Server NOLOCK
提示是大致相同READ UNCOMMITTED
事务隔离级别。在PostgreSQL,您可以设置READ UNCOMMITTED
,但它静静地升级水平,READ COMMITTED
。 READ UNCOMMITTED
不被支持。
8.4的PostgreSQL文档事务隔离:的http:// WWW。 postgresql.org/docs/8.4/static/transaction-iso.html
不隶属于 StackOverflow