言葉
中国地方あたりでは一般的なコンビニであるポプラ。
さっき酒を買いに行ったら、店内で「〜に乞うご期待下さい」っていう音が流れてた。
訂正
トランザクションの分離レベルを変えることを推奨している文書を見かけない、は誤り。
時々遅いのは許せるけどデータ間の整合性が破綻するのは許せないでしょ。
細かいことが分からない君は、きっと、分からなくてよい規模のことやってるわけでしょ?
なら、とりあえずserializableにしとけば良いんじゃね?
っていう文書を見かけない。。。
に訂正。
ActiveRecordのトランザクションは無くなるって書いてあったんじゃなくて、
単にオブジェクトレベルのトランザクションがduprecateされるって書いてあったが正解。
だった気がする。
最後に
いや、今回も調べず書いてますよ。勿論。
真面目に排他制御
MySQLで真面目に排他制御。
InnoDBはテーブルをロック出来ない。
いや、出来るんだけど、トランザクションの中ではロック出来ない。
私にとっては、ロック出来ないのと一緒。
じゃぁ、ロック用のテーブルに各テーブルに対応する行を作って、それを行ロックではどうだ!
っていうか、内部実装上も、それで良いんじゃない?
内部的にはそれでは駄目なのか、それとも、そもそも内部も糞もなく、それでは駄目なのか。
と言いつつ、でもテーブル毎にロックを切り替えたりするのは面倒臭い!
なら、もうどのテーブルを区別しないで1行だけロック?
それなら、そもそもトランザクションの分離レベルを変えた方が良い。。。
大規模なシステムならともかく、ほぼ個人レベルのちょっとしたアプリなら、
トランザクションの分離レベルを変えるが単純で確実な気がするのですが、
何故かそれが推奨されている文書を見たことがない?何かあるのか?
それはそうと、ActiveRecordのトランザクションは、
オブジェクトに付けたエラー情報まで綺麗さっぱりロールバック。。。
これは困る。。。
どうしようかと思ってソースを眺めたら、そもそもActiveRecordのトランザクションは、
もう無くなるって書いてあるし。
どうすれば良いのだろうか?
難しいなぁ。