[pgsql-jp: 40832] Re: デッドロックについて

Itagaki Takahiro itagaki.takahiro @ gmail.com
2011年 6月 29日 (水) 18:38:56 JST


2011/6/29 TAKATSUKA Haruka <harukat @ postgresql.jp>:
>> トランザクション2では不定であるため、
>>  B→C→D→A

> SELECT FOR UPDATE の一文の動作自体が、各行を順に行ロックしていく、
> というもので、他のトランザクションと並行で動作していきます。

行のロック順序が常には同じにならない理由は、
Postgres が追記型であることも関連しています。
最初は A→B→C→D の物理順で並んでいても、更新すると
順序が入れ替わる場合があるため、ちょうど入れ替わった
タイミングでデッドロックが発生したんだと思います。

説明の補足になれば。

-- 
Itagaki Takahiro


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