2009-09-01 3 views
0

필자는 교착 상태 (deadlocks)에 대해 깨닫게되었습니다. 즉,이 문제가 내 Rails 코드에 영향을 미치고 있습니다.Rails 코드에서 어떤 종류의 동시성/교착 상태 문제를 인식해야합니까?

Rails 앱을 개발할 때주의해야 할 특정 교착 상태 문제가 있습니까?

레일즈 코드에서 교착 상태가 발생 했습니까?

(데이터베이스 교착 상태는 응용 프로그램 교착 상태 만 언급하는 것이 아닙니다.)

+0

(레일에서 기본값) 이노와 문제 영역에 대해 읽을 수 있습니다 당신이 경쟁 조건에 대해 알아 때까지 기다려! –

답변

2

교착 상태는 I/O 리소스에 대한 경쟁을 의미하기 때문에 데이터베이스에서 가장 자주 발생합니다. 부적절하게 리소스를 잠그고 요청하고 스레드를 명시 적으로 사용하는 경우 걱정해야합니다.

그러나 모든 문제를 완화하기 위해 수행해야 할 특정 단계는 액세스중인 I/O 유형에 따라 다릅니다.

0

레일 루비 1.8는 단일 스레드이기 때문에 여러 OS 수준의 교착 상태 문제가없는, 심지어 1.9의 우려가 데이터베이스에 주로

잠겨 있습니다. Rails는 데이터베이스에서 ActiveRecord를 추상화하고 FK와 제약 조건을 응용 프로그램 수준 유효성 검사 (before_save, validates_ * 등)로 푸시하는 결과를 가져 오며 결과는 개발자가 DB 교착 상황에 대해 생각하지 못하게합니다.

당신이 MySQL을 사용하는 경우, 당신은 여기 http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html