スパース ファイル

データの多くがゼロであるファイルには、 スパース データ セットが含まれていると言われます。 このようなファイルは、通常、処理する画像データを含むファイルや高速データベース内のマトリックスなど、非常に大きくなります。 スパース データ セットを含むファイルの問題は、ファイルの大部分に有用なデータが含まれていないため、ディスク領域の非効率的な使用であるということです。

NTFS ファイル システムのファイル圧縮は、この問題の部分的な解決策です。 明示的に書き込まれていないファイル内のすべてのデータは、明示的に 0 に設定されます。 ファイル圧縮では、これらの範囲のゼロが圧縮されます。 ただし、ファイル圧縮の欠点は、データの圧縮と圧縮解除によってアクセス時間が長くなる可能性があるということです。

スパース ファイルのサポートは、ディスク領域の使用をより効率的にするもう 1 つの方法として、NTFS ファイル システムで導入されています。 スパース ファイル機能が有効になっている場合、システムは、0 以外のデータを含むリージョンを除き、ハード ディスク ドライブ領域をファイルに割り当てません。 バッファー内の大量のデータがゼロである書き込み操作が試行された場合、ゼロはファイルに書き込まれません。 代わりに、ファイル システムによって、ファイル内のゼロの場所を含む内部リストが作成され、このリストはすべての読み取り操作中に参照されます。 0 が配置されたファイルの領域で読み取り操作が実行されると、ファイル システムは読み取り操作に割り当てられたバッファー内の適切な数のゼロを返します。 このように、スパース ファイルのメンテナンスは、それにアクセスするすべてのプロセスに対して透過的であり、この特定のシナリオでは圧縮よりも効率的です。

スパース ファイルの既定のデータ値は 0 です。ただし、他の値に設定できます。

スパース ファイルの詳細については、次のトピックを参照してください。

このセクションの内容

トピック 説明
スパース ファイルの操作
GetVolumeInformation 関数を呼び出して、ファイル システムがスパース ファイルをサポートしているかどうかを判断します。
スパース ファイルのサイズの取得
GetCompressedFileSize 関数または GetFileSize 関数を使用して、割り当てられたサイズまたはファイルの合計サイズを取得します。
スパース ファイルとディスク クォータ
スパース ファイルは、実際に割り当てられたディスク領域ではなく、ファイルの名目サイズによってユーザー クォータに影響します。