デッドロックについて、つまりデッドロックとは何かを認識したところです。Rails コードに影響を与えるこの問題について心配しています。
Rails アプリの開発中に注意すべき特定のデッドロックの問題はありますか?
Rails コードでデッドロックに遭遇したことはありますか? あるいはその可能性はありますか?
(データベースのデッドロックについて言及しているわけではなく、アプリケーションのデッドロックのみを指しています)。
デッドロックについて、つまりデッドロックとは何かを認識したところです。Rails コードに影響を与えるこの問題について心配しています。
Rails アプリの開発中に注意すべき特定のデッドロックの問題はありますか?
Rails コードでデッドロックに遭遇したことはありますか? あるいはその可能性はありますか?
(データベースのデッドロックについて言及しているわけではなく、アプリケーションのデッドロックのみを指しています)。
デッドロックは、I/O リソースの競合を意味します。これが、データベースで最も頻繁に発生する理由です。不適切にロックしてリソースを要求していて、明示的にスレッドを使用している場合は、心配する必要があります。
ただし、問題を軽減するための具体的な手順は、アクセスしている I/O の種類によって異なります。
Ruby 1.8 はシングル スレッドであり、1.9 でもロックされているため、Rails には OS レベルのデッドロックの問題はあまりありません。
関心事は主にデータベースにあります。Rails には、データベースからの ActiveRecord の抽象化と、FK や制約などの要素がアプリケーション レベルの検証 (before_save、validates_* など) にプッシュされるという 2 つの問題があり、その結果、開発者は DB のデッドロック状況について考えるのを思いとどまらせます。
MYSQl を使用している場合は、innodb (Rails のデフォルト) の問題領域について、http: //dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html で読むことができます。