Производительность NTFS и большие объемы файлов и каталогов

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

181
задан mikemaccana 26 November 2018 в 00:45
поделиться

5 ответов

Вот некоторый совет от кого-то со средой, где у нас есть папки, содержащие десятки миллионов файлов.

  1. папка А хранит индексную информацию (ссылки на дочерние файлы & дочерняя папка) в индексном файле. Этот файл станет очень большим, когда у Вас будет много детей. Обратите внимание, что это не различает ребенка, это - папка и ребенок, это - файл. Единственной разницей действительно является содержание того ребенка, или индекс папки ребенка или данные файла ребенка.Примечание: Я упрощаю это несколько, но это понимает через.
  2. индексный файл будет фрагментирован. Когда это будет слишком фрагментировано, Вы будете неспособны добавить файлы к той папке. Это вызвано тем, что существует предел на # фрагментов, которые это позволяется. Это дизайном. Я подтвердил его с Microsoft в вызове инцидента поддержки. Таким образом, хотя теоретический предел количеству файлов, которые Вы можете иметь в папке, является несколькими миллиардами, удача, когда Вы начинаете поражать десятки миллиона файлов, поскольку Вы поразите ограничение фрагментации сначала.
  3. Это не все плохо как бы то ни было. Можно использовать инструмент: contig.exe для дефрагментации этого индекса. Это не уменьшит размер индекса (который может достигнуть до нескольких Концертов десятков миллиона файлов), но можно уменьшить # фрагментов.Примечание: Инструмент Disk Defragment НЕ будет дефрагментировать индекс папки. Это будет дефрагментировать данные файла. Только инструмент contig.exe будет дефрагментировать индекс. К вашему сведению: можно также использовать это для дефрагментации данных отдельного файла.
  4. , Если Вы дефрагментируетесь, не ожидайте, пока Вы не поражаете макс. # предела фрагмента. У меня есть папка, где я не могу дефрагментироваться, потому что я ожидал, пока не слишком поздно. Мой следующий тест должен попытаться переместить некоторые файлы из той папки в другую папку, чтобы видеть, мог ли я дефрагментировать его тогда. Если бы это перестало работать, то то, что я должен был бы сделать, 1) создают новую папку. 2) перемещение пакет файлов к новой папке. 3) дефрагментация новая папка. повторите № 2 & № 3, пока это не сделано и затем 4) удаляет старую папку и переименовывает новую папку для соответствия старому.

Для ответа на вопрос более непосредственно: Если Вы смотрите на 100K записи, никакие заботы. Пойдите выводят себя из строя. Если Вы смотрите на десятки миллионов записей, то также:

a) Планируют подразделять их на подпапки (например, позволяет, говорят, что Вы имеете 100M файлы. Лучше сохранить их в 1 000 папок так, чтобы у Вас только было 100 000 файлов на папку, чем сохранить их в 1 большую папку. Это создаст 1 000 индексов папки вместо единственного большого, это, более вероятно, поразит макс. # предела фрагментов или

, b) Планируют выполнять contig.exe регулярно для хранения индекса большой папки дефрагментируемым.

Read ниже, только если Вы скучаете.

фактический предел не находится на # фрагмента, а на количестве записей сегмента данных, который хранит указатели на фрагмент.

Поэтому то, что Вы имеете, является сегментом данных, который хранит указатели на фрагменты данных каталога. Информация о хранилищах данных каталога о подкаталогах & субфайлы, что каталог, предположительно, сохранен. На самом деле каталог ничего не "хранит". Это - просто функция отслеживания и представления, которая представляет иллюзию иерархии пользователю, так как сам носитель линеен.

266
ответ дан nulltoken 23 November 2019 в 06:08
поделиться

100,000 должен быть прекрасным.

я (анекдотическим образом) видел, что люди имеют проблемы со многими миллионами файлов, и у меня были проблемы самого с Проводником просто не наличие подсказки, как считать прошлые 60 - что-то, тысяча файлов, но NTFS должна быть хороша для объемов, Вы говорите.

В случае, если Вы задаетесь вопросом, техническое (и я надеюсь теоретический ) максимальное количество файлов: 4,294,967,295

15
ответ дан Oli 23 November 2019 в 06:08
поделиться

Для локального доступа большие количества каталогов/файлов, кажется, не проблема. Однако при доступе к нему через сеть существует значимый хит производительности после нескольких сотен (особенно, когда получено доступ от машин Vista (XP к Windows Server w/NTFS, казалось, работал намного быстрее в том отношении)).

8
ответ дан Brian Knoblauch 23 November 2019 в 06:08
поделиться

При создании папки с записями N Вы создаете список объектов N на уровне файловой системы. Этот список является структурой совместно используемых данных в масштабе всей системы. Если Вы тогда начнете изменять этот список непрерывно путем добавления/удаления записей, я ожидаю, по крайней мере, некоторую конкуренцию за блокировку по совместно используемым данным. Эта конкуренция - теоретически - может негативно влиять на производительность.

Для сценариев только для чтения я не могу вообразить причину снижения производительности каталогов с большим количеством записей.

2
ответ дан Constantin 23 November 2019 в 06:08
поделиться

Существуют также проблемы производительности с созданием короткого имени файла, замедляющим вещи. Microsoft рекомендует выключить создание короткого имени файла, если у Вас есть больше, чем 300k файлы в папке [1]. Чем менее уникальны первые 6 символов, тем больше проблемы это.

[1] Как Работы NTFS из http://technet.microsoft.com, ищите "300,000"

46
ответ дан Tony Lee 23 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

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