Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Transakcyjny system PLIKÓW NTFS (TxF) został starannie zaprojektowany pod kątem wydajności i zazwyczaj działa lepiej niż alternatywy transakcyjne ogólnego przeznaczenia w podobnych scenariuszach. Jednak transakcje systemu plików mają większe obciążenie niż operacje niezwiązane z transakcjami, a pewne zmniejszenie wydajności we/wy w porównaniu z nietransaktoryzowaną operacją we/wy jest oczekiwane. Aplikacje o krytycznym znaczeniu dla wydajności powinny przeprowadzać cykl kwalifikacji wdrażania technologii, oceniając wpływ operacji transakcyjnych systemu plików na wydajność.
Omówienie operacji TxF
TxF używa cofania rejestrowania w celu rejestrowania zmian niezbędnych do ponownego wprowadzenia systemu plików w spójny stan, nazywany również wycofywaniem, w przypadku wystąpienia przerwania transakcji. To cofanie rejestrowania generuje dodatkowe operacje we/wy i jest źródłem narzutów wydajności TxF w porównaniu z operacjami nie transakcyjnego systemu plików.
Ogólne podsumowanie działania txf jest następujące:
- W miarę postępu transakcji txF zapisuje cofa rekordy w pliku dziennika dla każdej modyfikacji wprowadzonej w systemie plików. Jeśli wystąpi przerwanie, te rekordy cofania są analizowane, aby umieścić system plików z powrotem w stanie, który był przed rozpoczęciem transakcji.
- Zmiana metadanych cofanie rekordu opisuje zmianę tylko w metadanych systemu plików. Niektóre z nich to ruchy, zmiany nazw, dołączania i zmiany atrybutów. W przypadku rekordów cofania zmian metadanych wszystkie informacje niezbędne do cofnięcia zmiany znajdują się w rekordzie i przechowywane w pliku dziennika.
- Zastąp cofanie rekordu opisuje zastępowanie części pliku. Po zastąpieniu pliku oryginalna zawartość pliku jest przechowywana w specjalnym pliku cofania w ukrytym katalogu, a zastąpienie rekordu wskazuje na ten plik. Gdy aktualizacje plików zostaną ostatecznie opróżnione z pamięci podręcznej do dysku, zawartość pliku cofania musi być również opróżniona, więc transacted file overwrite może wygenerować maksymalnie dwa dodatkowe losowe operacje we/wy: jeden do odczytu starych danych i jeden do zapisania w pliku cofania. Te dodatkowe operacje we/wy są kosztem wydajności TxF.
- Po zatwierdzeniu txF najpierw opróżnia wszystkie informacje cofania, a następnie opróżnia rzeczywisty plik zmiany, a następnie zapisuje i opróżnia rekord zatwierdzenia. Jeśli nie ma cofniętych plików do opróżnienia, jedynym dodatkowym obciążeniem TxF w stosunku do nieuprzetanych operacji we/wy jest opróżnianie dziennika. Jednak opróżnienia dzienników powodują wydajne duże zapisy sekwencyjne, dzięki czemu koszt wydajności jest minimalny.
- TxF jest zoptymalizowany pod kątem zatwierdzenia. Oczekuje się, że większość transakcji zakończy się powodzeniem i nie będzie musiała wycofać, dlatego wszystkie rekordy cofania transakcji powinny przejść nieużywane. Z punktu widzenia wydajności operacje zatwierdzania TxF są szybkie, a wycofywanie intensywnie obciąża zasoby.
- Wycofywanie jest bardziej intensywnie obciążane zasobami niż zatwierdzanie. Podczas wycofywania wszystkie zmiany wprowadzone w transakcji muszą zostać cofnięte. Ogólnie rzecz biorąc, czas trwania wycofywania może być w przybliżeniu taki sam, jaki trwał, aby pierwotnie wprowadzić zmiany. Jeśli na przykład wprowadzenie wszystkich zmian zajęło 1 sekundę, może to potrwać około 1 sekundy, aby je cofnąć. W przypadku bardzo długich transakcji wycofywanie może spowodować dodatkowy wpływ na wydajność. Na przykład czas rozruchu systemu może być opóźniony, jeśli system musi automatycznie wycofać transakcję w przypadku, gdy system przestaje odpowiadać i musi wykonać nieplanowane ponowne uruchomienie.
Podsumowanie wniosków dotyczących wydajności, które można wyciągnąć z poprzedniej listy, są następujące:
- Koszt wydajności txF dla transakcji obejmujących zastępowanie plików może być znaczący.
- Koszt wydajności txF dla transakcji obejmujących tylko operacje metadanych może być stosunkowo niski, pod warunkiem, że są używane duże transakcje. Duża transakcja polega na tym, że istnieje wiele rekordów cofania dla każdego rekordu zatwierdzenia.
Zalecenia dotyczące najlepszej wydajności
Zamortyzuj obciążenie TxF na większe transakcje. Jeśli na przykład masz zestawy zmian N, aby wprowadzić zmiany, w których każda zmiana ma krokach M i możesz to zrobić jako N transakcji M kroków lub zrobić to wszystko jako pojedyncza transakcja z krokami M*N, ta ostatnia opcja byłaby bardziej wydajna.
Rozważ możliwy wpływ na rozruch bardzo dużych transakcji. Jak wspomniano wcześniej, wycofywanie może być powolne i opóźni czas rozruchu, jeśli system musi wykonać automatyczne wycofywanie jako czas rozruchu. Większa transakcja, tym dłuższe opóźnienie.
Zachowaj transakcje do większości operacji metadanych. To jest to, co TxF jest zoptymalizowane pod kątem i ogólnie wydajność jest mniej więcej taka sama jak nietransakcyjne operacje we/wy pliku dla dużych transakcji metadanych. Przykłady wydajnych funkcji txF metadanych to MoveFileTransacted, SetFileAttributesTransacted, CopyFileTransacted, DeleteFileTransacted, CreateHardLinkTransactedi dołączone zapisy (wywołania funkcji WriteFile, gdy wskaźnik pliku na końcu pliku, lub EOF). Przykładem operacji innych niż metadane intensywnie korzystające z zasobów są wywołania funkcji WriteFile, gdy wskaźnik pliku nie znajduje się w EOF.
Podsumowanie oczekiwań dotyczących wydajności txf
W przypadku aktualizacji w miejscu zastępowanie sekcji pliku będzie znacznie wolniejsze niż operacje we/wy pliku bez transakcji, podczas gdy wydajność TxF dla operacji metadanych systemu plików (na przykład tworzenie, przenoszenie i dołączanie) jest porównywalna z operacjami we/wy pliku bez transakcji w przypadku dużych transakcji.