필자는 교착 상태 (deadlocks)에 대해 깨닫게되었습니다. 즉,이 문제가 내 Rails 코드에 영향을 미치고 있습니다.Rails 코드에서 어떤 종류의 동시성/교착 상태 문제를 인식해야합니까?
Rails 앱을 개발할 때주의해야 할 특정 교착 상태 문제가 있습니까?
레일즈 코드에서 교착 상태가 발생 했습니까?
(데이터베이스 교착 상태는 응용 프로그램 교착 상태 만 언급하는 것이 아닙니다.)
필자는 교착 상태 (deadlocks)에 대해 깨닫게되었습니다. 즉,이 문제가 내 Rails 코드에 영향을 미치고 있습니다.Rails 코드에서 어떤 종류의 동시성/교착 상태 문제를 인식해야합니까?
Rails 앱을 개발할 때주의해야 할 특정 교착 상태 문제가 있습니까?
레일즈 코드에서 교착 상태가 발생 했습니까?
(데이터베이스 교착 상태는 응용 프로그램 교착 상태 만 언급하는 것이 아닙니다.)
교착 상태는 I/O 리소스에 대한 경쟁을 의미하기 때문에 데이터베이스에서 가장 자주 발생합니다. 부적절하게 리소스를 잠그고 요청하고 스레드를 명시 적으로 사용하는 경우 걱정해야합니다.
그러나 모든 문제를 완화하기 위해 수행해야 할 특정 단계는 액세스중인 I/O 유형에 따라 다릅니다.
레일 루비 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
(레일에서 기본값) 이노와 문제 영역에 대해 읽을 수 있습니다 당신이 경쟁 조건에 대해 알아 때까지 기다려! –