Сколько файлов в каталоге слишком многие (в Windows и Linux)? [дубликат]

Возможный дубликат:
Сколько файлов в каталоге слишком многие?

Мне сказали, что помещение слишком многих файлов в каталоге может вызвать проблемы производительности в Linux и Windows. Действительно ли это верно? И если так, что лучший способ состоит в том, чтобы избежать этого?

22
задан Community 23 May 2017 в 12:26
поделиться

2 ответа

Согласно этой статье Microsoft , время поиска в каталоге увеличивается пропорционально квадрату количества записей. (Хотя это была ошибка NT 3.5.)

Аналогичный вопрос был задан на Старом Джоэле на форуме программного обеспечения . Один из ответов заключался в том, что производительность, похоже, упала между 1000 и 3000 файлов, а один плакат достиг жесткого предела в 18000 файлов. Еще в одном сообщении утверждается, что возможны 300000 файлов, но время поиска быстро сокращается, так как все имена файлов 8.3 используются.

Чтобы избежать больших каталогов, создайте один, два или более уровней подкаталогов и хешируйте файлы в них. Самый простой вид хеша использует буквы имени файла. Таким образом, файл, начинающийся с abc0001.txt, будет помещен как \ b \ c \ abc0001.txt, если вы выбрали 3 уровня вложенности. 3, вероятно, является излишним - использование двух символов в каталоге уменьшает количество уровней вложенности. например ab \ abc0001.txt . Вам нужно будет перейти на два уровня вложенности только в том случае, если вы ожидаете, что в каком-либо каталоге будет намного больше, чем ca. 3000 файлов.

17
ответ дан 29 November 2019 в 05:26
поделиться

Файловая система Windows в настоящее время - NTFS. Максимальное количество файлов на томе - 4 294 967 295. Каталогизация файлов на диске происходит в дереве B +, которое дает вам возможность поиска в журнале (N).

В старой FAT32 было ограничение в 64 КБ файлов в папке. Индексирование также производилось списком для каждой папки, поэтому после пары тысяч производительность резко упала. Вам, вероятно, не стоит беспокоиться о FAT32, если у вашей аудитории нет DOS, windows 95,98 или Millenium (фу).

В Linux это действительно зависит от используемой файловой системы (это может быть NTFS, если вы решите это сделать) extf3 имеет ограничение 32 КБ файлов на каталог. Поиск также является деревом B + и даст вам поиск в журнале LOG (N)

. После дальнейшего просмотра ваш вопрос действительно должен касаться ограничений файловых систем.

10
ответ дан 29 November 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: