2013-05-01 2 views
10

내가 트랜잭션에서 다음 단계를하고 있어요 가정 ACID의 I를 얻는 방법 :지속 : 나는

  • 데이터베이스
  • 에서 일부 데이터 A를 읽을 일부 계산이 기반으로 할
  • 일부 데이터 B를 데이터베이스에 쓰십시오.

잠시 동안 A가 변경되면이 트랜잭션을 실패하게 할 수 있습니까?

요약하면 : 영구 패키지에서 격리를 어떻게 달성합니까?

답변

4

내가 persistent에게 자신을 사용하지 않은,하지만 Yesod book주의 할

하나 개 중요한 것은 단일 트랜잭션에서 runSqlConn 실행에 단일 호출 내에서 발생하는 모든 것을 언급하고있다. 많은 데이터베이스의 경우

  • , 비용이 많이 드는 작업이 될 수있는 거래 을 커밋이 두 중요한 의미를 가지고있다. 단일 단계 트랜잭션에 여러 단계를 추가함으로써 코드 속도를 극적으로 높일 수 있습니다. 예외가 runSqlConn에 단일 통화의 아무 곳이나 던져 경우

  • , 모든 작업은 (백엔드를 가정하면 롤백 지원을하고있다) 롤백됩니다. 이 당신에게 분리 보증을 제공 여부

아마 주어진 백 - 엔드 트랜잭션에 대한 격리 보장을 제공 여부에 따라 달라집니다.

+0

영구적으로 백엔드를 구성하는 방법이 있는지 알고 있습니까? –