ロックを実装する時に気をつけること

ロック処理の考察

・前提として
ロックは最小限にする(長いとロック待ちが多発)
デッドロックは何かがおかしい
必ず1人ずつ処理させる部分にロックを加える
DBにロック処理は任せる

・ロックテーブルを一つにまとめる
share_lock 等のテーブルを用意

この部分で一人一人処理される事を約束する
必ずこの中でずれてはいけない処理をする
デッドロックの発生を防ぐ

・行ロック
最終確認で必要な処理があれば、
その行だけロックをしてから確認の処理をする

・ロックのモード
http://www.ecoop.net/memo/archives/2008-05-30-1.html

ACCESS EXCLUSIVE を使う事は少ない(最強、違うセッションからのアクセスは許さない)
EXCLUSIVE 基本読み取りは大丈夫な場合が多いので、見直す