質問

での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する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top