200 000 изображений в одной папке в Linux, проблема с производительностью или нет? - PullRequest
14 голосов
/ 23 октября 2010

У меня есть сайт php / mysql с более чем 200 000 изображений в одной папке (сервер Linux) .Я не думаю, что мне никогда не нужно будет видеть их в проводнике, вместо этого они будут просматриваться на веб-сайте на их отдельных страницах.Они просто отображаются на странице товара на сайте. Файловая система ext3 .так разумно ли сохранять их в одной папке?это может замедлить работу сайта?

Ответы [ 6 ]

13 голосов
/ 23 октября 2010

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

Однако 200К файлов по-прежнему огромное количество. Разумно перемещать их в подкаталоги, основываясь на первых n символах имен файлов. Этот подход позволяет вам хранить только имена файлов, а не имена каталогов, и когда вам нужно получить доступ к файлу, вы знаете, где (в каком подкаталоге) его искать.

5 голосов
/ 24 октября 2010

На этот вопрос, похоже, ответили по ссылке ниже.

https://serverfault.com/questions/43133/filesystem-large-number-of-files-in-a-single-directory

1 голос
/ 29 октября 2010

Я знаю, что был выбран ответ, я хочу добавить решение по повышению производительности, для интереса

Запрос списка каталогов каждый раз будет стоить больше всего, если список каталогов возвращает все результаты каждый раз.

Вы можете повысить производительность, сохранив листинг в индексированной базе данных (скажем, SQLite) и просто запросив результаты оттуда. Таким образом, вы можете выбрать подмножество записей и реализовать нумерацию страниц, а также отфильтровать результаты.

0 голосов
/ 28 октября 2010

Эта статья, посвященная варианту ext2 для веб-сценариев, может вас заинтересовать: hashFS: применение хеширования для оптимизации файловых систем при чтении небольших файлов .

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

Конечно, в ретроспективе оценка должна была быть более обширной.Но, возможно, стоит прочитать.

0 голосов
/ 23 октября 2010

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

С другой стороны, разделение файлов на несколько папок, по-видимому, не имеет многих недостатков, кроме дополнительной сложности в работе с ними.

Производительность зависит от вашей файловой системы, ее конфигурации и вашего доступа.узоры.Я полагаю, что было бы довольно странно, если бы производительность была заметно хуже, если бы файлы были разбиты на несколько папок.

Так что я бы сказал, разбить на разные папки ...

0 голосов
/ 23 октября 2010

файловые системы определяют производительность, а 200 000 изображений без индексации снизят производительность в ext2 (или NTFS)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...