2011-03-19 6 views
11

데이터베이스로 작업 할 때 트랜잭션을 사용하는 것이 필수적입니다. 예를 들어 account A에서 account B으로 일정 금액을 송금하고 싶다고 가정 해보십시오. 데이터베이스 벤더는 어떻게 트랜잭션을 구현합니까?

  • 내가 따로 쿼리를 만들 수있다 이론적으로 계정 B.
  • 에 증가

    • 감소 돈을 계좌에 있지만, 오류가 발생 :이 두 쿼리를 포함한다. 따라서 확실하게 트랜잭션 내에서 두 개의 쿼리를 팩할 수 있으며 두 작업 중 하나가 정기적으로 끝나거나 전혀 변경되지 않았습니다. 돈이 사라지거나 생성되지 않습니다.

      문제는 나에게 책임이 나와 데이터베이스 공급 업체로 이동한다는 것입니다. 이제는 두 가지 작업을 모두 수행하고 둘 다 수행되었는지 또는 아무 것도 변경되지 않았 음을 확인하는 것이 데이터베이스의 책임입니다. 그리고 데이터베이스 개발자는 오류가 발생하는 것과 동일한 문제에 직면합니다.

      데이터베이스 공급 업체는 트랜잭션 안전을 위해 어떤 기술을 사용합니까?

    답변

    8

    위키피디아의 ACID - Implementations 페이지는 미리 쓰기 로깅, 섀도우 페이징 및 다중 버전 동시성 제어를 시작하게합니다. 더 많은 것을 찾으려면 링크를 클릭하십시오.

    각 DBMS 공급 업체는 자체 알고리즘을 구현합니다. 컨텍스트, 전체 ACID 또는 완화 된 요구 사항, 분산 트랜잭션 일관성 요구 사항 등에 따라 종종 다른 알고리즘을 구현합니다.

    관련 문제