SQLServerのNOLOCKヒントの等価のPostgreSQL
-
25-09-2019 - |
質問
でのSQLServerは、クエリがテーブルをロックしていないか、または同じテーブルをロックする他のクエリによってブロックされていないことを確認するための構文「(NOLOCKを)」を使用することができます。 例えばます。
SELECT * FROM mytable (nolock) WHERE id = blah
のPostgresで同等の構文は何ですか?私はPGでテーブルロックにいくつかの文書を発見した(のhttp://www.postgresql .ORG /ドキュメント/ 8.1 /インタラクティブ/ sqlを-lock.html の)、すべてがどのようにのロックのテーブルにに連動し、それのは、の。
解決
あなたがロックをしない限りA SELECTは、PostgreSQLで任意のテーブルをロックしません。
SELECT * FROM tablename FOR UPDATE;
PostgreSQLはするために、ロック競合を最小限に抑えるために MVCC に使用しますマルチユーザー環境での妥当なパフォーマンスを可能にします。読者は、作家や他の読者と競合しない。
他のヒント
私はいくつかの研究を行ってきたし、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する
所属していません StackOverflow