Udostępnij za pośrednictwem


Podstawowe pojęcia dotyczące txf

Izolacja odczytu

Transakcyjny system PLIKÓW NTFS (TxF) zapewnia spójność zatwierdzoną do odczytu.

transacted writer odnosi się do transakcyjnego uchwytu pliku otwartego z dowolnymi uprawnieniami, które nie są częścią ogólnego dostępu do odczytu, ale są częścią ogólnego dostępu do zapisu. transakcyjny pisarz wyświetla najnowszą wersję pliku, która zawiera wszystkie zmiany w ramach tej samej transakcji. Na plik może być przypisany tylko jeden zapis jednostkowy. Zapisujący niezwiązani z transakcjami są zawsze blokowani przez zapisującego transakcyjnie, nawet jeśli plik jest otwarty z uprawnieniami do współdzielenia zapisu.

czytnik transakcyjny odnosi się do transakcyjnego uchwytu pliku otwartego z dowolnymi uprawnieniami, które są częścią ogólnego dostępu do odczytu, ale nie są częścią ogólnego dostępu do zapisu. Czytnik transakcyjny wyświetla zatwierdzoną wersję pliku, która istniała w momencie otwarcia dojścia do pliku. Transakcyjny czytelnik jest izolowany od efektów transakcyjnych zapisujących. Zapewnia to spójny widok pliku tylko przez czas istnienia uchwytu pliku, tudzież blokuje zapisy dokonywane bez transakcji.

Notatka

Po otwarciu dojścia do modyfikacji za pomocą funkcji CreateFileTransacted, wszystkie kolejne otwarcia pliku w ramach tej transakcji, niezależnie od tego, czy jest tylko do odczytu, czy nie, są konwertowane przez system na transakcyjny zapis na potrzeby izolacji i innych semantyk transakcyjnej. Oznacza to, że po otwarciu dojścia w celu uzyskania dostępu tylko do odczytu, dojście nie otrzymuje widoku pliku sprzed rozpoczęcia transakcji; otrzymuje widok pliku z aktywnej transakcji.

Nieobsługiwane dojście do pliku nie widzi żadnych zmian wprowadzonych w ramach transakcji, dopóki transakcja nie zostanie zatwierdzona. Uchwyt pliku bez transakcji otrzymuje izolowany widok podobny do czytnika transakcyjnego, ale w przeciwieństwie do transakcyjnego czytnika, otrzymuje aktualizację pliku po zatwierdzeniu transakcji przez transakcyjnego zapisującego.

Poziomy izolacji

TxF zapewnia izolację zatwierdzoną do odczytu. Oznacza to, że aktualizacje plików nie są widoczne poza transakcją. Ponadto, jeśli plik jest otwierany więcej niż raz podczas odczytywania plików w ramach transakcji, mogą być widoczne różne wyniki z każdym kolejnym otwarciem. Pliki, które były dostępne podczas pierwszego uzyskiwania do nich dostępu, mogą być niedostępne (ponieważ zostały usunięte) lub na odwrót.

Blokowanie transakcyjne

Tworzenie transakcyjnego zapisu w pliku transakcyjnie blokuje plik. Po zablokowaniu pliku przez transakcję, inne operacje systemu plików poza transakcją blokującą, które próbują zmodyfikować transakcyjnie zablokowany plik, zostaną zakończone niepowodzeniem z powodu ERROR_SHARING_VIOLATION lub ERROR_TRANSACTIONAL_CONFLICT.

Poniższa tabela zawiera podsumowanie blokowania transakcyjnego.

Plik obecnie otwarty przez

Próba otwarcia pliku przez

Zrealizowany

Bez transakcji

Czytelnik

Czytelnik/Pisarz

Czytelnik

Odczyt/Zapis

Transakcyjny Czytelnik

Tak

Tak

Tak

Nr 2

Transakcyjny Czytnik/Piszący

Tak

Nr 2

Tak

Nr 2

Czytelnik bez transakcji

Tak

Tak

Tak

Tak

Czytelnik/Zapis beztransakcyjny

Nr 1

Nr 1

Tak

Tak

  1. Wystąpił błąd z ERROR_TRANSACTIONAL_CONFLICT
    2. Wystąpił błąd ERROR_SHARING_VIOLATION

Jeśli otworzysz nazwany strumień do modyfikacji przy użyciu transakcji, cały plik musi być zablokowany.

Oprócz blokowania transakcyjnego stosowane są typowe reguły udostępniania plików NTFS.

Należy wziąć pod uwagę dwa następujące tryby współużytkowania plików równolegle:

  • Tryb blokowania transakcyjnego.
  • Normalne tryby udostępniania plików.

Niezależnie od tego, który tryb jest bardziej restrykcyjny, ten ma zastosowanie.