CodeCompleteをポチった
ネット上での書評の評価がすこぶる高かったので勢いで購入
濃厚そうだけどがんばって読み切ろう。
ついでに、前々から気になっていた「ハッカーと画家」も合わせてポチった
InnoDBのSELECT〜FOR UPDATEの挙動に悩む
1. Transaction1 でdept_id が1のレコードに行ロックをかける。
SELECT * FROM hoge WHERE id = 1 FOR UPDATE;
2. Transaction2 でdept_id が1のレコードに行ロックをかける。
SELECT * FROM hoge WHERE id = 2 FOR UPDATE;
1 → 2の順に実行した場合、2を実行したときに1とは違う行に対してロックを
かけるはずなのに待ちになってしまう。
行ロックをかける場合、テーブル全体から見たときにロック対象となる行の割合
によっては自動的にテーブルロックになるのかなぁ
2008/08/16 追記
インデックスを張れば解決した。
インデックスが無いと自動的にテーブルロックになるらしい。