2009-07-03 3 views
0

현재 트래픽이 적은 바닐라 레일 앱을 보유하고 있으며 모든 것이 정상적으로 작동하는 것으로 보입니다.레일즈에서 두 모델의 잡종이 같은 모델을 업데이트하면 실패한 트랜잭션에 대해 걱정할 필요가 있습니까?

그러나 레일 내부에 대해 잘 알지 못하고 두 요청이 동시에 들어오고 바쁜 사이트에서 어떤 일이 발생하는지 궁금합니다. 같은 모델을 업데이트하려고합니다. 별도의 잡종 과정. 이로 인해 트랜잭션 예외 또는 이와 유사한 오류가 발생하거나 레일이 컨트롤러 메소드를 직렬화하는 데 어떤 마법을 사용합니까?

업데이트가 실패 할 경우 이러한 유형의 상황을 감시하고 처리하는 가장 좋은 방법은 무엇입니까?

배경을 더 많이 사용하려면 컨트롤러 메서드가 여러 모델을 업데이트하는 경우가 많습니다. 나는 현재 트랜잭션을 생성하고 기본 동작에 의존하기 위해 특별한 작업을 수행하지 않습니다. 이상적으로는 오류를 반환하는 대신 업데이트를 다시 시도하는 것이 좋습니다 (업데이트는 일반적으로 멱등수입니다. 즉 필요한 경우 두 번 수행하는 것이 좋습니다). 내 데이터베이스는 mysql입니다.

답변

1

afaik, mysql은 첫 번째 트랜잭션이 처리 될 때까지 기다린 다음 두 번째 트랜잭션을 처리합니다. #create, #update 및 #save는 SQL 트랜잭션으로 래핑됩니다. 그리고 나는 mysql이 그것들을 잘 처리 할 수 ​​있다고 생각한다.

관련 문제