Вопрос или проблема
Полагаю, что жесткого предела нет, но я знаю, что производительность ухудшается, когда вы помещаете слишком много файлов в одну папку Windows. У кого-нибудь есть хорошие правила для того, когда открытие файла становится заметно медленным?
Предполагая, что здесь используется NTFS, в этом случае технический предел составляет около 4 миллиардов файлов. И пока вы не превысите десятки тысяч файлов в каталоге, вам не стоит сильно беспокоиться.
Однако обратите внимание, что такие программы, как Explorer, начинают страдать намного раньше, чем при десятках тысяч файлов, потому что они пытаются получить доступ ко всем файлам в данном каталоге, чтобы получить метаданные и т. д.
Открытие файла не будет очень медленным, независимо от того, сколько файлов у вас в папке. Что уж точно убьет вас, так это перечисление файлов в этой папке. То есть просмотр содержимого папки с помощью Explorer, Far, dir, Get-ChildItem и т.д.
Тем не менее, у меня в папке temp около 2,5 тысяч файлов и папок, и отображение происходит мгновенно, так что это, по-видимому, все еще небольшое количество.
ETA: Ок, только что проверил, 10000 файлов в папке занимают около одной секунды на ее открытие в Far, а это и 20000 файлов даже не имеют значения в Explorer.
Смотрите здесь. Указано для файлов на том, а не в папке.
- NTFS: 2^32 – 1 = 4.294.967.295 файлов
- FAT: примерно 4 миллиона
На приличном потребительском оборудовании 150 тысяч файлов в папке — это число, с которым я сталкивался в Windows 10 сборки 18362.356, используя его встроенный проводник на жестком диске WD Blue 4 ТБ в NTFS (разделен на 2 ТБ + 2 ТБ). Для всех файлов с фиксированным размером 24 КБ и типом файла .7z. 150 тысяч — это число файлов, которые проводник может отобразить, я могу выбрать и выполнить некоторые операции. Любое большее количество в той же папке, и проводник Windows начинает замедляться.
Вероятно, что это количество зависит от Проводника файлов, файловой системы, ОС, скорости диска, типа диска (SSD/HDD/Raid HDD и т. д.), а также от самого поддерживающего оборудования, такого как контроллеры хранения, ЦП и состояние кабелей SATA (или PATA или m.2 разъема). Например, контроллеры SouthBridge, вероятно, будут иметь более медленную производительность, чем контроллеры CPU/NB, и подключение диска к SB должно быть более медленным в целом. Также файловый проводник 7zip значительно быстрее, чем Проводник файлов Windows при выборе большого количества файлов, в диапазоне 100 тысяч. Я не уверен насчет размеров файлов и повлияют ли они на время чтения, но мои другие папки с 1000 изображений в каждой папке загружаются долго, связано ли это с тем, что у них тип файлов .jpg/.png и т. д. или из-за их большого размера или из-за того, что проводник пытается создавать миниатюры для них, я не уверен. Я видел, что Windows пропускает создание миниатюр для изображений >20 МБ, так что это может быть весомым фактором.
Если хотите оставаться на стороне производительности, на мой взгляд, было бы лучше иметь около 50 тысяч файлов в папке, так как вам не придется беспокоиться о том, что различные проводники или ОС и т. д. вызовут сбой Проводника файлов или займут минуты времени на выбор/отображение.
Обновление 2021: как заявлено где-то около 4 миллиардов согласно MS, я тестировал с 1,8 миллиона файлов в одном каталоге на Windows 10, прокрутка и открытие случайного файла в Проводнике Windows было таким же быстрым, как и одного файла в каталоге
Несколько лет назад у меня были проблемы с директорией, в которой было около 30000 файлов, и новые файлы не могли быть записаны (это была “временная” директория eMule…), это было на разделе FAT32, но возможно, что я использовал Win98 в то время, и это был предел самой ОС.
Я использую Windows 10, и 25000 изображений в одной папке (средний размер файла 500 КБ заняли более часа, чтобы полностью загрузиться в папке. Рекомендуемое количество файлов в одной папке — 5000.
Я вижу, что это старый вопрос, но я все равно внесу свой вклад. Я работаю в хостинговой компании с более чем 300 клиентами. У некоторых из них миллионы файлов. Я знаю, по крайней мере, одного клиента, у которого в одной директории 6,6 миллиона файлов (это на сервере Windows с NTFS). Перечисление файлов занимает некоторое время, если это необходимо, но фактический клиент читает файлы только по отдельности. Производительность для них такая же, как и для других клиентов, у которых всего несколько файлов.
Это зависит от файловой системы. NTFS намного лучше, чем FAT32. FAT32 имеет жесткий предел. Однако, правило, которым я руководствуюсь, — около 500 на директорию.
Я сталкивался с этой проблемой в нескольких разных случаях. В результате я принял стратегию использования структуры улья, где каждый уровень улья будет содержать по 1000 подкаталогов, если нужно будет разместить больше элементов в улье, добавляйте еще один уровень и так далее. Я управляю одним ульем, который может вмещать 4,000,000,000 элементов, каждой элемент в своей собственной подпапке на дне улья. В настоящее время у каждого элемента от 5 до 500 файлов, связанных с одним элементом. Из-за размеров файлов, с которыми мы имеем дело, улей должен быть распределен на несколько томов по 32 ТБ. Мы используем тома по 32 ТБ, выделенные из массива RAID 5, построенного из 12 NVMe-дисков по 16 ТБ. Размер тома в 32 ТБ – это хороший компромисс между минимальным размером выделения и пустой тратой пространства. Сервер подключен к другим локальным серверам через сеть Ethernet со скоростью 10 Гбит/с и обычно может достигать скорости передачи файлов более 1 ГБ/с. Это зверь, и быстрый зверь в придачу…
.
Ответ или решение
При работе с файловыми системами Windows, и особенно с NTFS, возникает вопрос о предельном количестве файлов, которое можно разместить в одной папке без заметной деградации производительности. Теоретически, NTFS поддерживает количество файлов до 4 294 967 295 на один том, что предполагает возможность значительного количества файлов даже в пределах одной директории. Однако, как показывает практика, прежде чем достичь этого предела, пользователи могут столкнуться с проблемами производительности, особенно при работе с файловыми менеджерами, такими как Проводник.
Теория
Проблемы производительности при размещении большого количества файлов в одной папке связаны не столько с файлыми системой, как с особенностями их обработки файловыми менеджерами и другими приложениями. Например, Windows Explorer, хотя и способен обрабатывать большое количество файлов, начинает демонстрировать снижение скорости при количестве файлов порядка десятков тысяч. Это связано с тем, что Проводник должен обработать метаданные каждого файла, а также, при необходимости, сгенерировать иконки или эскизы для визуализации.
Помимо файлового менеджера, на производительность также влияют аппаратные спецификации, такие как скорость жесткого диска (HDD, SSD, NVMe) и мощность процессора, а также операционная память. Быстрые накопители SSD и особенно NVMe могут значительно улучшить производительность при доступе к файлам, в то время как более медленные HDD будут испытывать существенно большую нагрузку при одинаковом количестве файлов.
Примеры
На основании проведенных испытаний пользователи замечают, что до 10 000 файлов в папке, как правило, работают без значительных задержек при отображении в стандартном Проводнике Windows. Однако, по мере увеличения числа файлов, например, до 25 000 изображений, время, необходимое для полной загрузки содержимого папки, может превышать час. С другой стороны, специализированные файловые менеджеры, такие как Far Manager, могут быстрее обработать такой объём данных, однако и здесь существует временная задержка при открытии папок с большим количеством файлов.
Рекомендации по оптимальному количеству файлов могут меняться в зависимости от используемой файловой системы и конфигурации оборудования. Пользователи, работающие с большими объёмами данных, часто организуют файлы в многослойные иерархические структуры (системы "ульев"), что позволяет распределять нагрузку на обработку данных и эффективно организовывать доступ к ним.
Применение
Для оптимальной работы с большими объёмами данных рекомендуется следующее:
-
Организация структуры папок: Структурирование файлов в иерархические подкаталоги может значительно ускорить работу системы. Например, использование многослойной структуры, где каждый слой вмещает до 1000 подкаталогов, позволяет более эффективно управлять большими объёмами данных.
-
Использование SSD или NVMe накопителей: Переход на более быстрые накопители значительно улучшает производительность при доступе и обработке файлов. Это особенно актуально при работе с большими файлами и большим количеством файлов в одном каталоге.
-
Оптимизация программного обеспечения: Если работа связана с регулярным доступом к большим объёмам файлов, стоит рассмотреть использование альтернатив Проводнику, таких как Far Manager, 7-Zip и других инструментов, которые могут быть более эффективными при обработке большого числа файлов.
-
Минимизация отображаемой информации: Отключение генерации эскизов и уменьшение отображаемой информации (например, размеров файлов) может сократить время загрузки папки в Проводнике.
-
Мониторинг и поддержка оборудования: Регулярная проверка состояния оборудования, особенно жестких дисков и контроллеров, помогает избежать ухудшения их работы и предотвратить потерю данных, что также может повлиять на производительность системы в целом.
Таким образом, несмотря на теоретически огромные возможности файловых систем, таких как NTFS, для комфортной работы с большими объёмами данных и эффективного управления файлами на практике следует принимать во внимание технические ограничения оборудования и используемых программ. Соблюдение рекомендаций по организации данных и оптимизации системы может способствовать более плавной и эффективной работе в среде Windows.