다음을 통해 공유


기본 TxF 개념

격리 읽기

TxF(트랜잭션 NTFS)는 커밋된 읽기 일관성을 제공합니다.

트랜잭션된 작성자은/는 일반 읽기 액세스의 일부가 아니지만, 일반 쓰기 액세스의 일부인 주어진 모든 권한으로 열려 있는 트랜잭션된 파일 핸들을 가리킵니다. 거래 작가는 동일한 거래에서 모든 변경 사항을 포함하는 파일의 최신 버전을 볼 수 있습니다. 파일당 하나의 트랜잭션된 기록기만 있을 수 있습니다. 트랜잭션되지 않은 기록기는 파일이 공유 쓰기 권한으로 열려 있는 경우에도 트랜잭션된 기록기에 의해 항상 차단됩니다.

트랜잭션의 판독기는 일반 읽기 액세스의 일부이지만 일반 쓰기 액세스의 일부가 아닌 권한으로 열린 트랜잭션 파일 핸들을 나타냅니다. 트랜잭션된 리더는 파일 핸들이 열렸을 때 존재했던 커밋된 파일 버전을 볼 수 있습니다. 거래된 읽기 장치는 거래된 작성기의 영향으로부터 격리됩니다. 이렇게 하면 파일 핸들의 수명 동안만 일관된 보기를 제공하고 트랜잭션되지 않은 작성자들을 차단합니다.

메모

CreateFileTransacted 함수를 사용하여 수정하기 위해 핸들을 열면, 시스템에서는 해당 트랜잭션 내에서 파일을 다시 열 때마다 읽기 전용 여부와 상관없이 트랜잭션된 기록기로 변환하여 격리 및 기타 트랜잭션 의미 체계를 지원합니다. 즉, 이후에 읽기 전용 액세스를 위해 핸들을 열면 트랜잭션이 시작되기 전에 핸들이 파일 보기를 수신하지 않습니다. 파일의 활성 트랜잭션 뷰를 수신합니다.

트랜잭션되지 않은 파일 핸들은 트랜잭션이 커밋될 때까지 트랜잭션 내에서 변경된 내용을 볼 수 없습니다. 트랜잭션되지 않은 파일 핸들은 트랜잭션 판독기와 유사한 격리된 뷰를 수신하지만, 트랜잭션 판독기와는 달리 트랜잭션된 기록기가 트랜잭션을 커밋할 때 파일 업데이트를 받게 됩니다.

격리 수준

TxF는 커밋된 읽기 격리(read-committed isolation)를 제공합니다. 즉, 파일 업데이트가 트랜잭션 외부에서 표시되지 않습니다. 또한 트랜잭션 내에서 파일을 읽는 동안 파일이 두 번 이상 열려 있는 경우 이후 열 때마다 다른 결과가 표시될 수 있습니다. 처음 액세스할 때 사용할 수 있었던 파일은 삭제되었기 때문에 사용할 수 없거나 그 반대의 경우도 마찬가지입니다.

트랜잭션 잠금

파일에 트랜잭션 기록기를 만드는 트랜잭션으로 파일을 잠깁니다. 파일이 트랜잭션에 의해 잠긴 후, 트랜잭션 외부에서 해당 트랜잭션으로 잠긴 파일을 수정하려는 다른 파일 시스템 작업은 ERROR_SHARING_VIOLATION 또는 ERROR_TRANSACTIONAL_CONFLICT오류가 발생하며 실패합니다.

다음 표에서는 트랜잭션 잠금을 요약합니다.

현재 열려 있는 파일

파일 열기 시도

거래가 이루어짐

거래되지 않음

독자

읽기/작성기

독자

읽기/쓰기

거래된 판독기

No2

거래된 판독기/기록기

No2

No2

거래되지 않은 판독기

비거래성 판독기/기록기

No1

번호 1

  1. 오류 ERROR_TRANSACTIONAL_CONFLICT로 인해 실패.
    2. ERROR_SHARING_VIOLATION로 실패합니다.

트랜잭션을 사용하는 수정을 위해 명명된 스트림을 열면 전체 파일을 잠가야 합니다.

트랜잭션 잠금 외에도 일반적인 NTFS 파일 공유 규칙이 적용됩니다.

다음 두 파일 공유 모드를 병렬로 고려해야 합니다.

  • 트랜잭션 잠금 모드입니다.
  • 일반 파일 공유 모드입니다.

더 제한적인 모드가 적용됩니다.