- 241 名前:nobodyさん mailto:sage [2011/01/29(土) 14:10:00 ID:???]
- railsの設定ではなくて、MySQLのトランザクションレベルによる。
ttp://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html InnoDB使ってるだろうから、デフォルトの REPEATABLE READ だと思われる。 結論からいうと、Bookテーブルは別のプロセスから変更を受けうる。 ただし、Bookテーブル内のロックされた行は 別プロセスから変更を受けないことが保証される。 テーブルレベルのロックと行レベルのロックの違いを汁。 Aさんが行1,2を更新している間は、Bさんは行1,2のコミットが終わるまでは、 UPDATEやDELETEはもちろん、SELECT文での読み取りも不可能になる。 ただし、Aさんがそのトランザクション中に更新しないとMySQLが判断した 行3なんかがあたとしたら、Bさんは行3に関しては読み取り・更新が出来る。 書き方が変だと、トランザクションはったつもりでも レースコンディションが起こるので注意。 ttp://d.hatena.ne.jp/LukeSilvia/20100130/p1
|

|