gooサービスにログインしづらい事象について

Webアプリをoracleからpostgresqlに移行しています。
行き詰ってしまったので、どなたかアドバイスをお願いします!

セッション1で
 LOCK TABLE abc IN EXCLUSIVE MODE
としている状態で、セッション2で
select処理をして内容表示する処理があるのですが
posgreでは、トランザクションを終了しないと、セッション2は止まったままになってしまいます。
セッション1のトランザクションを終了すると、セッション2で正常に表示できるのですが。。。

oracleでは、selectがLOCK前の状態で結果を返してくれるので
セッション2も正常に表示できています。

いろいろ調べて、selectはOKのようなMODEも試したのですが、
解決できませんでした。
該当テーブルはROW単位ではなく、全体でLOCKしないとダメなのです。

※試した方法は、
psqlで該当テーブルを、IN EXCLUSIVE MODEでLOCKし、Webアプリで
select表示する処理を行いました。

よろしくお願いします。

A 回答 (1件)

EXCLUSIVE MODE のロックと SELECT は競合しません。

Oracleと同じ動作です。
「Webアプリのselect」が、更新処理や FOR SHARE/UPDATE 等、
select以外の処理を勝手に追加していませんか?

参考URL:http://www.postgresql.jp/document/current/html/e …

この回答への補足

有難うございます。

私も参考URLを見て、うまくいくはずと思ったのですが、実際にはトランザクション終了待ちになってしまい、ダメでした。

Webアプリは selectした内容を表に表示しているだけで
更新や FOR SHARE/UPDATE などは行っていないのですが。。。

補足日時:2011/10/12 14:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報