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

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

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

Ответы

Ответ 1

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

Аналогичный вопрос был задан на Old Joel on Software Forum. Один ответ заключался в том, что производительность, похоже, падает от 1000 до 3000 файлов, а один плакат попадает в жесткий предел в 18000 файлов. Еще одно сообщение утверждает, что 300 000 файлов возможны, но время поиска быстро уменьшается, так как все имена файлов 8.3 истощаются.

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

Ответ 2

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

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

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

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