[pgsql-jp: 38679] 拡張問い合わせでupdate文を投げたときにロックのかかるタイミングについて

tutui-t @ sys.tosho.co.jp tutui-t @ sys.tosho.co.jp
2007年 8月 23日 (木) 17:17:11 JST


こんにちは。筒井と申します。


BEGIN文でトランザクションの開始を明示することなくupdate文を実行すると、
ROW EXCLUSIVEモードで自動的にロックがかかります。
このとき、拡張問い合わせでupdateを発行していたとすると、
どの段階でロックがかかるのでしょうか。

デッドロックのような現象を調べている過程で、
pg_locks、postgresqlのデバッグログ、
クライアント−サーバ間のパケットを突き合わせてみたところ、
postgresqlはParseメッセージを受けるとロックを取りに行き、
ロックを獲得できたらParseCompleteを返すように見えるのです。
ロック獲得はExecuteメッセージのときに行うと思っていたので、
意外でした。

恐れ入りますが、このあたりの事情をご存じの方がいらっしゃれば
教えてくださいませんか?




pgsql-jp メーリングリストの案内