Dapatkah kinerja sistem file menurun jika ada sejumlah besar file dalam satu direktori (NTFS)?

5

Saya telah mendengar bahwa kinerja sistem file (pada partisi NTFS) dapat mulai berkurang jika jumlah file dalam satu direktori menjadi sangat besar (mis:> = 10.000.000 item). Apakah itu benar

Jika benar, berapakah jumlah maksimum file yang disarankan dalam satu direktori?

SUNTING:

Tentang kinerja: Saya berpikir tentang operasi file di dalam folder itu (baca, tulis, buat, hapus) yang mungkin lambat.

tigrou
sumber
Iya. Nasihat MSDN untuk tidak menyimpan lebih dari 20 ribu file dalam satu direktori. (Windows Vista 2gb Ram) - Saya perhatikan ketika mulai lebih dari 40k (Windows 7 4gb Ram) itu terhenti. Semuanya hanya hang dan berhenti bekerja. Tetapi memiliki sub direktori 100k tidak mempengaruhi kecepatan sama sekali :)
Piotr Kula

Jawaban:

6

Saya menjawab pertanyaan saya sendiri: Ya, itu pasti lebih lambat.

Saya menulis sebuah C# Console Applicationyang membuat banyak file kosong di folder dan kemudian secara acak mengaksesnya. Inilah hasilnya:

10 files in a folder        : ~26000 operation/sec
1.000.000 files a in folder : ~6000 operation/sec

Berikut ini adalah kode sumber:

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);
tigrou
sumber
+1 untuk kode. Saya menemukan bahwa selama ada di atas 1000 file, waktunya sangat mirip, tidak ada perbedaan 1k atau 300k. Di bawah 1000 file itu tergantung pada jumlah file.
wezten
1
Agar bermanfaat, Anda perlu membandingkan beberapa cara alternatif untuk menyimpan dan mengakses file 1M secara acak. Misalnya, membuat 1000 subfolder yang masing-masing berisi 1000 file, lalu secara acak mengakses file 1M tersebut.
ToolmakerSteve
2

Jika Anda membaca ini , maka Anda harus mendapatkan pemahaman yang cukup baik tentang bagaimana NTFS bekerja mengindeks file dan folder.

Secara lokal seharusnya tidak banyak pengindeksan file dan folder hazel, jika Anda mengikuti pedoman dalam tautan di atas, tetapi akan membutuhkan banyak pemeliharaan dengan banyak file.
Di jaringan itu akan menjadi cerita lain. Ini akan lambat, ini dari pengalaman saya sendiri di tempat kerja, di mana kami memiliki folder dengan ribuan folder dan perlu beberapa waktu untuk mengindeks melalui jaringan.

Hal lain yang mungkin meningkat dengan banyak file adalah untuk menonaktifkan penamaan pendek :, yang akan menghentikan windows dari membuat entri direktori file kedua yang akan mengikuti konvensi 8.3 (konvensi penamaan file MS-DOS) dan mengurangi waktu folder untuk menghitung, karena itu tidak harus mencari nama pendek yang terkait dengan nama panjang mereka saat menghitung.

  • Pergi ke Rundi menu Start
  • Ketik cmddan ketika Anda melihat prompt perintah, lalu klik kanan padanya dan pilihRun as administrator
  • Ketika di Command prompt ketik perilaku fsutil atur disable8dot3 1 untuk menonaktifkan penamaan pendek
  • Mulai ulang

Jika Anda ingin mengaktifkannya lagi, ketik perilaku fsutil yang disetel disable8dot3 0

Jesper Jensen
sumber
1
Tidak sepenuhnya benar. Pernahkah Anda mencoba mengakses folder dengan file 80k (katakan folder email yang buruk di server) tanpa tweak. Anda bisa menunggu sehari sebelum menghitung.
Piotr Kula
Tidak masalah tentu saja itu tidak benar dalam semua kasus, tetapi saya masih percaya jika Anda melakukannya dengan benar dan mempertahankannya secara teratur, maka Anda dapat memiliki sistem kerja. Apa maksud Anda dengan folder email yang buruk?
Jesper Jensen
1
Anda jelas tidak pernah harus berurusan dengan server surat sebelumnya :) Anda harus menulis jawaban Anda bahwa jika itu dikelola dengan baik (sekitar 80% admin sistem tidak melakukan itu) maka tidak akan ada masalah. Selain itu jawaban Anda tidak benar-benar berbicara tentang kinerja baca / tulis dan apa yang menonaktifkan 8dot3 akan lakukan untuk mempengaruhi kinerja. Juga tidak ada fakta keras bahwa ini memang membantu. Maaf karena sakit seperti itu .. tetapi jawaban Anda perlu perbaikan. -1 hingga Anda melakukannya. Beri tahu saya
Piotr Kula
Saya tidak pernah mengatakan bahwa saya telah berurusan dengan server mail atau bahwa di atas adalah dari pengalaman saya sendiri (kecuali bagian jaringan) :). Itu ada dalam jawaban saya untuk dipertahankan but it will need alot of maintenance with that many files.. Tapi terima kasih atas kritiknya dan saya akan mencoba sedikit meningkatkan jawaban saya.
Jesper Jensen
Lihat komentar StephenR pada jawaban ini - jika sudah memiliki banyak file, setelah menonaktifkan 8.3, perlu menghapus 8.3 nama yang ada untuk mendapatkan peningkatan kecepatan.
ToolmakerSteve