真面目に排他制御
MySQLで真面目に排他制御。
InnoDBはテーブルをロック出来ない。
いや、出来るんだけど、トランザクションの中ではロック出来ない。
私にとっては、ロック出来ないのと一緒。
じゃぁ、ロック用のテーブルに各テーブルに対応する行を作って、それを行ロックではどうだ!
っていうか、内部実装上も、それで良いんじゃない?
内部的にはそれでは駄目なのか、それとも、そもそも内部も糞もなく、それでは駄目なのか。
と言いつつ、でもテーブル毎にロックを切り替えたりするのは面倒臭い!
なら、もうどのテーブルを区別しないで1行だけロック?
それなら、そもそもトランザクションの分離レベルを変えた方が良い。。。
大規模なシステムならともかく、ほぼ個人レベルのちょっとしたアプリなら、
トランザクションの分離レベルを変えるが単純で確実な気がするのですが、
何故かそれが推奨されている文書を見たことがない?何かあるのか?
それはそうと、ActiveRecordのトランザクションは、
オブジェクトに付けたエラー情報まで綺麗さっぱりロールバック。。。
これは困る。。。
どうしようかと思ってソースを眺めたら、そもそもActiveRecordのトランザクションは、
もう無くなるって書いてあるし。
どうすれば良いのだろうか?
難しいなぁ。