1つのディレクトリ内のファイル数が非常に多くなると(例:> = 10.000.000アイテム)、ファイルシステムのパフォーマンス(NTFSパーティション上)が低下し始める可能性があると聞きました。それは本当ですか?
Trueの場合、1つのディレクトリに推奨されるファイルの最大数はいくつですか。
編集:
パフォーマンスについて:そのフォルダー内のファイル操作(読み取り、書き込み、作成、削除)が遅くなる可能性があることを考えています。
私は自分の質問に答えます:はい、それは間違いなく遅いです。
フォルダー内に多くの空のファイルを作成し、それらにランダムにアクセスするC# Console Application
を作成しました。結果は次のとおりです。
10 files in a folder : ~26000 operation/sec
1.000.000 files a in folder : ~6000 operation/sec
ソースコードは次のとおりです。
List<string> files = new List<string>();
Console.WriteLine("creating files...");
for (int i = 0; i < 1000 * 1000; i++)
{
string filename = @"C:\test\" + Guid.NewGuid().ToString();
using (File.Create(filename));
files.Add(filename);
}
Console.WriteLine("benchmark...");
Random r = new Random();
Stopwatch sw = new Stopwatch();
sw.Start();
int count = 0;
while (sw.ElapsedMilliseconds < 5000)
{
string filename = files[r.Next(files.Count)];
string text = System.IO.File.ReadAllText(filename);
count++;
}
Console.WriteLine("{0} operation/sec ", count / 5);
this を読むと、NTFSがファイルとフォルダのインデックス作成をどのように機能するかをかなりよく理解できているはずです。
上記のリンクのガイドラインに従っている場合、ローカルでは、ファイルやフォルダーのインデックスを作成するヘーゼルはそれほど多くないはずですが、その数のファイルで多くのメンテナンスが必要になります。
ネットワークでは別の話になります。遅くなります。これは、数千のフォルダーを含むフォルダーがあり、ネットワーク経由でインデックスを作成するのに時間がかかる、私自身の職場での経験によるものです。
その多くのファイルでおそらく増加するもう1つのことは、short-naming:を無効にすることです。これにより、Windowsは 8.3規則(MS-DOSファイル命名規則) に従う2番目のファイルディレクトリエントリを作成できなくなります。列挙するときに長い名前に関連付けられた短い名前を検索する必要がないため、フォルダが列挙する時間を短縮します。
Run
に移動しますcmd
と入力し、コマンドプロンプトが表示されたら、それを右クリックしてRun as administrator
を選択します。再度有効にする場合は、fsutil Behavior set disable8dot3 0と入力します。