5

ファイルとディレクトリの管理操作のために Win32 API 関数を参照していました。これらの関数のいくつかには、いわゆる「トランザクション」対応があることがわかりました。

例:
CreateDirectoryおよびCreateDirectoryTransacted
RemoveDirectoryおよびRemoveDirectoryTransacted
CreateFileおよびCreateFileTransacted
CopyFileおよびCopyFileTransacted

これらのトランザクション関数の説明、ウィキペディアの記事Transactional NTFS、およびこの MSDN マガジンのページを読みました。しかし、これらのページの (私にとっては) 専門用語が多すぎるため、これらの説明が明確に理解できませんでした。それらはすべて、これらの関数が「アトミック」であるという共通のコンセンサスに達します。でも、「原子」という言葉から理解する限り、それは周りに電子が回転している原子核です...

これらの機能の目的と操作は何ですか? 基本的かつ簡単な英語の文章で説明していただけますか? API 関数のトランザクション バージョンが好まれる理由と時期は?

4

3 に答える 3

3

つまり、トランザクション (ファイル システム、データベース、または銀行) は、プロセスでエラーが発生しなかった場合にのみ完了します。

非トランザクション ファイル システムと API を使用して、以下を含むファイルがあるとします。

AAAA

ここで、すべての 's でファイルを埋めたいと考えていますBが、そうすると途中で電源が失われ、すべてのデータがディスクにコミットされるわけではありません。(電源が戻った後) ファイルを読み返すと、矛盾した状態になります。

BBAA

FAT とスキャンディスクを覚えていますか?

トランザクションを使用すると、ファイル システムは基本的に最初にディスク上の別の場所に変更を書き込み、「ファイル データの場所のポインタ」のinodeをデータの新しい場所に変更します。再び利用可能」。

これにはトランザクション NTFS (TxF) は必要ありません。「標準」NTFS は一貫性を確保することも約束しているためです。

NTFS は、標準のトランザクション ログと回復技術を使用してボリュームの整合性を保証する、回復可能なファイル システムです。システム障害が発生した場合、NTFS は、トランザクション ログ ファイルに格納されている情報にアクセスする回復手順を実行します。NTFS 回復手順により、ボリュームが一貫した状態に復元されることが保証されます。トランザクション ログに必要なオーバーヘッドはごくわずかです。

于 2013-07-11T12:24:43.733 に答える