2009-09-01 7 views
0

私はちょうどデッドロックについて、つまり彼らが何であるかを理解するようになりました。この問題が私のRailsコードに影響を与えるのではないかと心配しています。Railsコードでは、どのような並行性/デッドロックの問題に注意する必要がありますか?

Railsアプリケーションを開発する際に注意すべきデッドロックの問題はありますか?

Railsコードでデッドロックが発生したことはありますか?

(私はデータベースデッドロックに言及していません - アプリケーションデッドロックのみ)

+0

(Railsのではデフォルト)のInnoDBでの問題領域について読むことができますだけでは、競合状態を知るまで待って! –

答えて

2

デッドロックは、I/Oリソースの競合を意味します。これは、データベースで最も頻繁に発生する理由です。あなたが不適切にロックしてリソースを要求していて、明示的にスレッドを使用している場合、あなたは気にする必要があります。

ただし、問題を軽減するための具体的な手順は、アクセスするI/Oの種類によって異なります。

0

RailsはRubyの1.8がシングルスレッドであるため、多くのOSレベルのデッドロックの懸念を持っていない、とさえ1.9に懸念がデータベース内に主に

ロックされています。 RailsはデータベースからActiveRecordを抽象化し、FKや制約がアプリケーションレベルの検証(before_save、validates_ *など)にプッシュされ、結果はデベロッパーのデッドロック状況を考えるのを妨げます。

MySQLを使用している場合、あなたはここにhttp://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html

関連する問題